From f0b1000c1d5fa390296eafa399d058da0386cf0f Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Sat, 2 Oct 2021 15:52:49 +0200 Subject: [PATCH 001/242] port from private repository --- .babelrc | 3 - .browserslistrc | 17 + .editorconfig | 16 + .eslintignore | 1 - .eslintrc | 14 - .gitignore | 48 +- .idea/.gitignore | 8 + .idea/codeStyles/Project.xml | 178 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/egon_angular.iml | 12 + .idea/inspectionProfiles/Project_Default.xml | 17 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + .vscode/launch.json | 16 - .vscode/settings.json | 6 - Dockerfile | 15 - Gruntfile.js | 133 - LICENSE | 674 - README.md | 308 +- angular.json | 122 + app/app.js | 849 - .../features/change-icon/Replace.js | 51 - .../features/change-icon/ReplaceOptions.js | 52 - .../features/change-icon/index.js | 13 - .../DomainStoryContextPadProvider.js | 364 - .../features/context-pad/index.js | 21 - .../features/dictionary/dictionary.js | 172 - .../features/export/createTitleAndInfo.js | 81 - .../features/export/dirtyFlag.js | 26 - .../features/export/dstDownload.js | 88 - .../features/export/pngDownload.js | 345 - .../features/export/storyDownload.js | 284 - .../features/export/svgDownload.js | 121 - .../appendIconDictionary.js | 15 - .../customizationDialog.js | 524 - .../iconSetCustomization/dictionaries.js | 81 - .../iconSetCustomization/persitence.js | 344 - .../features/iconSetCustomization/styling.js | 31 - .../features/import/ImportRepair.js | 136 - .../features/import/import.js | 414 - .../labeling/DSLabelEditingPreview.js | 140 - .../features/labeling/DSUpdateLabelHandler.js | 145 - .../features/labeling/index.js | 30 - .../features/labeling/position.js | 105 - .../features/modeling/DSModeling.js | 67 - .../features/modeling/index.js | 49 - .../features/palette/DomainStoryPalette.js | 229 - .../features/palette/index.js | 14 - .../features/replay/initializeReplay.js | 138 - .../features/replay/replay.js | 180 - .../features/replay/replayFunctions.js | 267 - .../language/DomainStoryRenderer.js | 753 - .../language/canvasElementRegistry.js | 159 - .../language/classes/collection.js | 70 - .../language/elementTypes.js | 9 - .../language/icon/dictionaries.js | 149 - .../language/icon/iconConfig.js | 204 - .../language/icon/iconDictionary.js | 21 - app/domain-story-modeler/language/naming.js | 30 - app/domain-story-modeler/language/testmode.js | 9 - .../modeler/DomainStoryIdFactory.js | 65 - .../modeler/DomainStoryUpdater.js | 177 - .../modeler/UpdateHandler/DSElementHandler.js | 53 - .../UpdateHandler/DSMassRenameHandlers.js | 39 - .../headlineAndDescriptionUpdateHandler.js | 48 - app/domain-story-modeler/modeler/index.js | 48 - .../util/ArrayExtensions.js | 45 - .../util/MathExtensions.js | 44 - app/domain-story-modeler/util/Sanitizer.js | 37 - app/domain-story-modeler/util/TypeCheck.js | 38 - app/domain-story.css | 819 - app/index.html | 756 - app/logo/archive_dirty.png | Bin 532 -> 0 bytes app/logo/color-picker.png | Bin 543 -> 0 bytes app/logo/done.png | Bin 188 -> 0 bytes app/logo/flag.png | Bin 145 -> 0 bytes app/logo/settings.png | Bin 424 -> 0 bytes app/logo/shortCutInfo.png | Bin 200 -> 0 bytes dependencygraph.dot | 216 - dependencygraph.svg | Bin 340662 -> 0 bytes e2e/protractor.conf.js | 37 + e2e/src/app.e2e-spec.ts | 25 + e2e/src/app.po.ts | 11 + e2e/tsconfig.json | 10 + egon_angular.sam | 1933 ++ egon_angular.ts2sotoxml | 8 + images/archive.png | Bin 239 -> 0 bytes images/forward.png | Bin 181 -> 0 bytes images/image.png | Bin 256 -> 0 bytes images/play.png | Bin 194 -> 0 bytes images/previous.png | Bin 192 -> 0 bytes images/spellcheck.png | Bin 396 -> 0 bytes images/stop.png | Bin 91 -> 0 bytes images/unarchive.png | Bin 254 -> 0 bytes karma.conf.js | 97 +- package-lock.json | 20062 ++++++++++------ package.json | 129 +- {app/logo => readme_images}/archive.png | Bin {app/logo => readme_images}/forward.png | Bin {images => readme_images}/gear.png | Bin {app/logo => readme_images}/image.png | Bin {images => readme_images}/keyboard.png | Bin {app/logo => readme_images}/play.png | Bin {app/logo => readme_images}/previous.png | Bin {app/logo => readme_images}/spellcheck.png | Bin {app/logo => readme_images}/stop.png | Bin {app/logo => readme_images}/unarchive.png | Bin src/app/app-routing.module.ts | 10 + src/app/app.component.html | 53 + src/app/app.component.scss | 81 + src/app/app.component.spec.ts | 31 + src/app/app.component.ts | 42 + src/app/app.module.ts | 96 + .../autosave-settings.component.html | 21 + .../autosave-settings.component.scss | 0 .../autosave-settings.component.spec.ts | 36 + .../autosave-settings.component.ts | 54 + src/app/autosave/domain/autosave.ts | 6 + src/app/autosave/domain/autosaves.ts | 5 + .../service/autosave-state.service.spec.ts | 41 + .../service/autosave-state.service.ts | 41 + .../autosave/service/autosave.service.spec.ts | 172 + src/app/autosave/service/autosave.service.ts | 138 + .../common/domain/activityBusinessObject.ts | 24 + src/app/common/domain/activityCanvasObject.ts | 28 + src/app/common/domain/businessObject.ts | 39 + src/app/common/domain/canvasObject.ts | 52 + src/app/common/domain/configuration.ts | 9 + .../domain/dictionary/dictionary.spec.ts | 120 + .../common/domain/dictionary/dictionary.ts | 80 + src/app/common/domain/domainConfiguration.ts | 5 + src/app/common/domain/elementTypes.ts | 9 + src/app/common/domain/groupBusinessObject.ts | 11 + src/app/common/domain/groupCanvasObject.ts | 19 + src/app/common/domain/iconConfiguration.ts | 191 + src/app/common/domain/rootObject.ts | 12 + src/app/common/domain/waypoint.ts | 8 + src/app/common/util/deepCopy.ts | 39 + src/app/common/util/mathExtensions.ts | 71 + src/app/common/util/naming.ts | 12 + src/app/common/util/sanitizer.ts | 37 + .../confirm-dialog/info-dialog.component.html | 13 + .../confirm-dialog/info-dialog.component.scss | 10 + .../info-dialog.component.spec.ts | 24 + .../confirm-dialog/info-dialog.component.ts | 33 + .../confirm-dialog/infoDialogData.ts | 21 + src/app/dialog/service/dialog.service.spec.ts | 34 + src/app/dialog/service/dialog.service.ts | 14 + .../dirty-flag.service.spec.ts | 16 + .../dirtyFlag-service/dirty-flag.service.ts | 30 + .../domManipulation/domain/replayConstants.ts | 8 + .../service/dom-manipulation.service.spec.ts | 66 + .../service/dom-manipulation.service.ts | 166 + .../domain-configuration.component.html | 107 + .../domain-configuration.component.scss | 56 + .../domain-configuration.component.spec.ts | 46 + .../domain-configuration.component.ts | 288 + .../domain-configuration/domain/allIcons.ts | 68 +- .../domain-configuration.service.spec.ts | 16 + .../service/domain-configuration.service.ts | 242 + .../service/icon-dictionary.service.spec.ts | 16 + .../service/icon-dictionary.service.ts | 267 + .../element-registry.service.spec.ts | 130 + .../element-registry.service.ts | 171 + .../export-dialog.component.html | 16 + .../export-dialog.component.scss | 0 .../export-dialog.component.spec.ts | 24 + .../export-dialog/export-dialog.component.ts | 35 + .../export-dialog/exportDialogData.ts | 19 + src/app/export/domain/box.ts | 6 + src/app/export/domain/browserSpecs.ts | 4 + src/app/export/domain/configAndDst.ts | 43 + src/app/export/exportUtil.js | 104 + src/app/export/service/export.service.spec.ts | 45 + src/app/export/service/export.service.ts | 209 + .../service/html-presentation.service.spec.ts | 45 + .../service/html-presentation.service.ts | 193 + src/app/export/service/png.service.spec.ts | 16 + src/app/export/service/png.service.ts | 282 + src/app/export/service/svg.service.spec.ts | 25 + src/app/export/service/svg.service.ts | 114 + .../component/general-settings.component.html | 9 + .../component/general-settings.component.scss | 0 .../general-settings.component.spec.ts | 24 + .../component/general-settings.component.ts | 10 + .../component/header-buttons.component.html | 115 + .../component/header-buttons.component.scss | 72 + .../header-buttons.component.spec.ts | 24 + .../component/header-buttons.component.ts | 183 + .../header/component/header.component.html | 9 + .../header/component/header.component.scss | 8 + .../header/component/header.component.spec.ts | 66 + src/app/header/component/header.component.ts | 24 + .../header-dialog.component.html | 17 + .../header-dialog.component.scss | 3 + .../header-dialog.component.spec.ts | 43 + .../header-dialog/header-dialog.component.ts | 47 + .../import-domain-story.service.spec.ts | 53 + .../import-domain-story.service.ts | 346 + .../import-repair.service.spec.ts | 17 + .../import-service/import-repair.service.ts | 166 + .../component/label-dictionary.component.html | 28 + .../component/label-dictionary.component.scss | 31 + .../label-dictionary.component.spec.ts | 32 + .../component/label-dictionary.component.ts | 73 + src/app/label-dictionary/domain/labelEntry.ts | 4 + .../domain/workObjectLabelEntry.ts | 6 + .../service/label-dictionary.service.spec.ts | 16 + .../service/label-dictionary.service.ts | 132 + .../service/mass-naming.service.spec.ts | 16 + .../service/mass-naming.service.ts | 40 + .../activity-dialog.component.html | 30 + .../activity-dialog.component.scss | 3 + .../activity-dialog.component.spec.ts | 25 + .../activity-dialog.component.ts | 63 + .../activity-dialog/activityDialogData.ts | 21 + .../modeler/component/modeler.component.html | 1 + .../modeler/component/modeler.component.scss | 8 + .../component/modeler.component.spec.ts | 24 + .../modeler/component/modeler.component.ts | 12 + .../domain-story-modeler-module.module.ts | 10 + .../modeler}/domain-story-modeler/index.js | 292 +- .../modeler/change-icon/index.js | 11 + .../modeler/change-icon/replace.js | 53 + .../change-icon/replaceMenuProvider.js | 42 +- .../modeler/change-icon/replaceOptions.js | 60 + .../domainStoryContextPadProvider.js | 362 + .../modeler/context-pad/index.js | 20 + .../modeler/domainStoryElementFactory.js | 71 +- .../modeler/domainStoryIdFactory.js | 58 + .../modeler/domainStoryRenderer.js | 821 + .../modeler/domainStoryRules.js | 137 +- .../modeler/domainStoryUpdater.js | 197 + .../domain-story-modeler/modeler/index.js | 46 + .../modeler/labeling/dsLabelEditingPreview.js | 140 + .../labeling/dsLabelEditingProvider.js | 257 +- .../modeler/labeling/dsLabelUtil.js | 99 +- .../modeler/labeling/dsUpdateLabelHandler.js | 137 + .../modeler/labeling/index.js | 21 + .../modeler/labeling/position.js | 110 + .../modeler/modeling/dSModeling.js | 73 + .../modeler/modeling/index.js | 46 + .../modeler}/numbering/numbering.js | 81 +- .../modeler/palette/domainStoryPalette.js | 231 + .../modeler/palette/index.js | 11 + .../updateHandler/dsActivityHandlers.js | 66 +- .../modeler/updateHandler/dsElementHandler.js | 60 + .../updateHandler/dsMassRenameHandlers.js | 37 + .../headlineAndDescriptionUpdateHandler.js | 35 + .../domain-story-modeler/modeler/util.js | 33 +- .../test/spec/dSLabelUtilSpec.js | 120 + .../test/spec/domainStoryIdFactorySpec.js | 45 + .../test/spec/domainStoryModeler.spec.ts | 0 .../test/spec/domainStoryModelingSpec.js | 270 + .../test}/spec/language/Test_2018-08-21.dst | 0 .../test}/spec/language/diagram.bpmn | 0 .../test/spec/language/dstJsons.js | 168 + .../test/spec/numberingSpec.js | 39 + .../test/spec/positionSpec.js | 143 + .../test/spec/testHelper.js | 24 + .../test/spec/test_conf.js | 4 + .../service/initializer.service.spec.ts | 66 + .../modeler/service/initializer.service.ts | 295 + .../modeler/service/modeler.service.spec.ts | 40 + src/app/modeler/service/modeler.service.ts | 148 + .../renderer-service/renderer.service.spec.ts | 160 + src/app/renderer-service/renderer.service.ts | 48 + .../replay-state.service.spec.ts | 31 + .../replay-service/replay-state.service.ts | 23 + src/app/replay-service/replay.service.spec.ts | 259 + src/app/replay-service/replay.service.ts | 104 + .../component/settings.component.html | 32 + .../component/settings.component.scss | 21 + .../component/settings.component.spec.ts | 37 + .../component/settings.component.ts | 51 + .../service/settings.service.spec.ts | 16 + .../service/settings.service.ts | 23 + src/app/settings-module/settings.module.ts | 23 + src/app/spec/testHelpers.spec.ts | 110 + src/app/spec/util.spec.ts | 151 + .../storyCreator-service/domain/storyStep.ts | 6 + .../story-creator.service.spec.ts | 113 + .../story-creator.service.ts | 138 + .../component/description.component.html | 3 + .../component/description.component.scss | 18 + .../component/description.component.spec.ts | 24 + .../component/description.component.ts | 18 + .../service/title.service.spec.ts | 76 + .../service/title.service.ts | 96 + .../title/component/title.component.html | 16 + .../title/component/title.component.scss | 29 + .../title/component/title.component.spec.ts | 32 + .../title/component/title.component.ts | 32 + src/assets/.gitkeep | 0 .../language/icon => src/assets}/icons.css | 24 +- .../assets}/logo/Quadrat_wps_de_Farbig.png | Bin .../assets}/logo/domainStorytellingIcon.png | Bin {app => src/assets}/logo/dst_logo.png | Bin {app => src/assets}/logo/edit_blue.png | Bin src/decs.d.ts | 2 + src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 16 + src/favicon.ico | Bin 0 -> 948 bytes src/index.html | 402 + src/main.ts | 13 + src/polyfills.ts | 64 + src/styles.scss | 294 + src/test.ts | 29 + test/TestHelper.js | 21 - .../iconSetCustomization/persistenceSpec.js | 32 - test/spec/features/import/importSpec.js | 33 - .../spec/features/labeling/DSLabelUtilSpec.js | 119 - test/spec/features/labeling/positionSpec.js | 133 - test/spec/features/numbering/numberingSpec.js | 41 - test/spec/features/replay/replaySpec.js | 153 - .../DomainStoryIconCustomizationSpec.js | 86 - .../spec/language/DomainStoryIdFactorySpec.js | 46 - test/spec/language/DomainStoryModelerSpec.js | 558 - test/spec/language/DomainStoryModelingSpec.js | 272 - test/spec/language/DownloadSpec.js | 94 - test/spec/language/MathExtensionsSpec.js | 20 - test/spec/language/collectionSpec.js | 130 - test/spec/language/dstJsons.js | 178 - test/spec/language/icon/iconConfigSpec.js | 29 - test/spec/language/icon/iconDictionarySpec.js | 21 - test/spec/language/namingSpec.js | 31 - test/spec/test_conf.js | 7 - test/spec/util/MathExtensionsSpec.js | 30 - test/spec/util/SanitizerSpec.js | 27 - test/spec/util/TypeCheckSpec.js | 142 - tsconfig.app.json | 10 + tsconfig.json | 29 + tsconfig.spec.json | 10 + 334 files changed, 28668 insertions(+), 20606 deletions(-) delete mode 100644 .babelrc create mode 100644 .browserslistrc create mode 100644 .editorconfig delete mode 100644 .eslintignore delete mode 100644 .eslintrc create mode 100644 .idea/.gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/egon_angular.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 Dockerfile delete mode 100644 Gruntfile.js delete mode 100644 LICENSE create mode 100644 angular.json delete mode 100644 app/app.js delete mode 100644 app/domain-story-modeler/features/change-icon/Replace.js delete mode 100644 app/domain-story-modeler/features/change-icon/ReplaceOptions.js delete mode 100644 app/domain-story-modeler/features/change-icon/index.js delete mode 100644 app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js delete mode 100644 app/domain-story-modeler/features/context-pad/index.js delete mode 100644 app/domain-story-modeler/features/dictionary/dictionary.js delete mode 100644 app/domain-story-modeler/features/export/createTitleAndInfo.js delete mode 100644 app/domain-story-modeler/features/export/dirtyFlag.js delete mode 100644 app/domain-story-modeler/features/export/dstDownload.js delete mode 100644 app/domain-story-modeler/features/export/pngDownload.js delete mode 100644 app/domain-story-modeler/features/export/storyDownload.js delete mode 100644 app/domain-story-modeler/features/export/svgDownload.js delete mode 100644 app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js delete mode 100644 app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js delete mode 100644 app/domain-story-modeler/features/iconSetCustomization/dictionaries.js delete mode 100644 app/domain-story-modeler/features/iconSetCustomization/persitence.js delete mode 100644 app/domain-story-modeler/features/iconSetCustomization/styling.js delete mode 100644 app/domain-story-modeler/features/import/ImportRepair.js delete mode 100644 app/domain-story-modeler/features/import/import.js delete mode 100644 app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js delete mode 100644 app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js delete mode 100644 app/domain-story-modeler/features/labeling/index.js delete mode 100644 app/domain-story-modeler/features/labeling/position.js delete mode 100644 app/domain-story-modeler/features/modeling/DSModeling.js delete mode 100644 app/domain-story-modeler/features/modeling/index.js delete mode 100644 app/domain-story-modeler/features/palette/DomainStoryPalette.js delete mode 100644 app/domain-story-modeler/features/palette/index.js delete mode 100644 app/domain-story-modeler/features/replay/initializeReplay.js delete mode 100644 app/domain-story-modeler/features/replay/replay.js delete mode 100644 app/domain-story-modeler/features/replay/replayFunctions.js delete mode 100644 app/domain-story-modeler/language/DomainStoryRenderer.js delete mode 100644 app/domain-story-modeler/language/canvasElementRegistry.js delete mode 100644 app/domain-story-modeler/language/classes/collection.js delete mode 100644 app/domain-story-modeler/language/elementTypes.js delete mode 100644 app/domain-story-modeler/language/icon/dictionaries.js delete mode 100644 app/domain-story-modeler/language/icon/iconConfig.js delete mode 100644 app/domain-story-modeler/language/icon/iconDictionary.js delete mode 100644 app/domain-story-modeler/language/naming.js delete mode 100644 app/domain-story-modeler/language/testmode.js delete mode 100644 app/domain-story-modeler/modeler/DomainStoryIdFactory.js delete mode 100644 app/domain-story-modeler/modeler/DomainStoryUpdater.js delete mode 100644 app/domain-story-modeler/modeler/UpdateHandler/DSElementHandler.js delete mode 100644 app/domain-story-modeler/modeler/UpdateHandler/DSMassRenameHandlers.js delete mode 100644 app/domain-story-modeler/modeler/UpdateHandler/headlineAndDescriptionUpdateHandler.js delete mode 100644 app/domain-story-modeler/modeler/index.js delete mode 100644 app/domain-story-modeler/util/ArrayExtensions.js delete mode 100644 app/domain-story-modeler/util/MathExtensions.js delete mode 100644 app/domain-story-modeler/util/Sanitizer.js delete mode 100644 app/domain-story-modeler/util/TypeCheck.js delete mode 100644 app/domain-story.css delete mode 100644 app/index.html delete mode 100644 app/logo/archive_dirty.png delete mode 100644 app/logo/color-picker.png delete mode 100644 app/logo/done.png delete mode 100644 app/logo/flag.png delete mode 100644 app/logo/settings.png delete mode 100644 app/logo/shortCutInfo.png delete mode 100644 dependencygraph.dot delete mode 100644 dependencygraph.svg create mode 100644 e2e/protractor.conf.js create mode 100644 e2e/src/app.e2e-spec.ts create mode 100644 e2e/src/app.po.ts create mode 100644 e2e/tsconfig.json create mode 100644 egon_angular.sam create mode 100644 egon_angular.ts2sotoxml delete mode 100644 images/archive.png delete mode 100644 images/forward.png delete mode 100644 images/image.png delete mode 100644 images/play.png delete mode 100644 images/previous.png delete mode 100644 images/spellcheck.png delete mode 100644 images/stop.png delete mode 100644 images/unarchive.png rename {app/logo => readme_images}/archive.png (100%) rename {app/logo => readme_images}/forward.png (100%) rename {images => readme_images}/gear.png (100%) rename {app/logo => readme_images}/image.png (100%) rename {images => readme_images}/keyboard.png (100%) rename {app/logo => readme_images}/play.png (100%) rename {app/logo => readme_images}/previous.png (100%) rename {app/logo => readme_images}/spellcheck.png (100%) rename {app/logo => readme_images}/stop.png (100%) rename {app/logo => readme_images}/unarchive.png (100%) create mode 100644 src/app/app-routing.module.ts create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.scss create mode 100644 src/app/app.component.spec.ts create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/autosave/autosave-settings-component/autosave-settings.component.html create mode 100644 src/app/autosave/autosave-settings-component/autosave-settings.component.scss create mode 100644 src/app/autosave/autosave-settings-component/autosave-settings.component.spec.ts create mode 100644 src/app/autosave/autosave-settings-component/autosave-settings.component.ts create mode 100644 src/app/autosave/domain/autosave.ts create mode 100644 src/app/autosave/domain/autosaves.ts create mode 100644 src/app/autosave/service/autosave-state.service.spec.ts create mode 100644 src/app/autosave/service/autosave-state.service.ts create mode 100644 src/app/autosave/service/autosave.service.spec.ts create mode 100644 src/app/autosave/service/autosave.service.ts create mode 100644 src/app/common/domain/activityBusinessObject.ts create mode 100644 src/app/common/domain/activityCanvasObject.ts create mode 100644 src/app/common/domain/businessObject.ts create mode 100644 src/app/common/domain/canvasObject.ts create mode 100644 src/app/common/domain/configuration.ts create mode 100644 src/app/common/domain/dictionary/dictionary.spec.ts create mode 100644 src/app/common/domain/dictionary/dictionary.ts create mode 100644 src/app/common/domain/domainConfiguration.ts create mode 100644 src/app/common/domain/elementTypes.ts create mode 100644 src/app/common/domain/groupBusinessObject.ts create mode 100644 src/app/common/domain/groupCanvasObject.ts create mode 100644 src/app/common/domain/iconConfiguration.ts create mode 100644 src/app/common/domain/rootObject.ts create mode 100644 src/app/common/domain/waypoint.ts create mode 100644 src/app/common/util/deepCopy.ts create mode 100644 src/app/common/util/mathExtensions.ts create mode 100644 src/app/common/util/naming.ts create mode 100644 src/app/common/util/sanitizer.ts create mode 100644 src/app/dialog/component/confirm-dialog/info-dialog.component.html create mode 100644 src/app/dialog/component/confirm-dialog/info-dialog.component.scss create mode 100644 src/app/dialog/component/confirm-dialog/info-dialog.component.spec.ts create mode 100644 src/app/dialog/component/confirm-dialog/info-dialog.component.ts create mode 100644 src/app/dialog/component/confirm-dialog/infoDialogData.ts create mode 100644 src/app/dialog/service/dialog.service.spec.ts create mode 100644 src/app/dialog/service/dialog.service.ts create mode 100644 src/app/dirtyFlag-service/dirty-flag.service.spec.ts create mode 100644 src/app/dirtyFlag-service/dirty-flag.service.ts create mode 100644 src/app/domManipulation/domain/replayConstants.ts create mode 100644 src/app/domManipulation/service/dom-manipulation.service.spec.ts create mode 100644 src/app/domManipulation/service/dom-manipulation.service.ts create mode 100644 src/app/domain-configuration/component/domain-configuration.component.html create mode 100644 src/app/domain-configuration/component/domain-configuration.component.scss create mode 100644 src/app/domain-configuration/component/domain-configuration.component.spec.ts create mode 100644 src/app/domain-configuration/component/domain-configuration.component.ts rename app/domain-story-modeler/language/icon/all_Icons.js => src/app/domain-configuration/domain/allIcons.ts (81%) create mode 100644 src/app/domain-configuration/service/domain-configuration.service.spec.ts create mode 100644 src/app/domain-configuration/service/domain-configuration.service.ts create mode 100644 src/app/domain-configuration/service/icon-dictionary.service.spec.ts create mode 100644 src/app/domain-configuration/service/icon-dictionary.service.ts create mode 100644 src/app/elementRegistry-service/element-registry.service.spec.ts create mode 100644 src/app/elementRegistry-service/element-registry.service.ts create mode 100644 src/app/export/component/export-dialog/export-dialog.component.html create mode 100644 src/app/export/component/export-dialog/export-dialog.component.scss create mode 100644 src/app/export/component/export-dialog/export-dialog.component.spec.ts create mode 100644 src/app/export/component/export-dialog/export-dialog.component.ts create mode 100644 src/app/export/component/export-dialog/exportDialogData.ts create mode 100644 src/app/export/domain/box.ts create mode 100644 src/app/export/domain/browserSpecs.ts create mode 100644 src/app/export/domain/configAndDst.ts create mode 100644 src/app/export/exportUtil.js create mode 100644 src/app/export/service/export.service.spec.ts create mode 100644 src/app/export/service/export.service.ts create mode 100644 src/app/export/service/html-presentation.service.spec.ts create mode 100644 src/app/export/service/html-presentation.service.ts create mode 100644 src/app/export/service/png.service.spec.ts create mode 100644 src/app/export/service/png.service.ts create mode 100644 src/app/export/service/svg.service.spec.ts create mode 100644 src/app/export/service/svg.service.ts create mode 100644 src/app/general-settings/component/general-settings.component.html create mode 100644 src/app/general-settings/component/general-settings.component.scss create mode 100644 src/app/general-settings/component/general-settings.component.spec.ts create mode 100644 src/app/general-settings/component/general-settings.component.ts create mode 100644 src/app/header/component/header-buttons.component.html create mode 100644 src/app/header/component/header-buttons.component.scss create mode 100644 src/app/header/component/header-buttons.component.spec.ts create mode 100644 src/app/header/component/header-buttons.component.ts create mode 100644 src/app/header/component/header.component.html create mode 100644 src/app/header/component/header.component.scss create mode 100644 src/app/header/component/header.component.spec.ts create mode 100644 src/app/header/component/header.component.ts create mode 100644 src/app/header/header-dialog/header-dialog.component.html create mode 100644 src/app/header/header-dialog/header-dialog.component.scss create mode 100644 src/app/header/header-dialog/header-dialog.component.spec.ts create mode 100644 src/app/header/header-dialog/header-dialog.component.ts create mode 100644 src/app/import-service/import-domain-story.service.spec.ts create mode 100644 src/app/import-service/import-domain-story.service.ts create mode 100644 src/app/import-service/import-repair.service.spec.ts create mode 100644 src/app/import-service/import-repair.service.ts create mode 100644 src/app/label-dictionary/component/label-dictionary.component.html create mode 100644 src/app/label-dictionary/component/label-dictionary.component.scss create mode 100644 src/app/label-dictionary/component/label-dictionary.component.spec.ts create mode 100644 src/app/label-dictionary/component/label-dictionary.component.ts create mode 100644 src/app/label-dictionary/domain/labelEntry.ts create mode 100644 src/app/label-dictionary/domain/workObjectLabelEntry.ts create mode 100644 src/app/label-dictionary/service/label-dictionary.service.spec.ts create mode 100644 src/app/label-dictionary/service/label-dictionary.service.ts create mode 100644 src/app/label-dictionary/service/mass-naming.service.spec.ts create mode 100644 src/app/label-dictionary/service/mass-naming.service.ts create mode 100644 src/app/modeler/component/activity-dialog/activity-dialog.component.html create mode 100644 src/app/modeler/component/activity-dialog/activity-dialog.component.scss create mode 100644 src/app/modeler/component/activity-dialog/activity-dialog.component.spec.ts create mode 100644 src/app/modeler/component/activity-dialog/activity-dialog.component.ts create mode 100644 src/app/modeler/component/activity-dialog/activityDialogData.ts create mode 100644 src/app/modeler/component/modeler.component.html create mode 100644 src/app/modeler/component/modeler.component.scss create mode 100644 src/app/modeler/component/modeler.component.spec.ts create mode 100644 src/app/modeler/component/modeler.component.ts create mode 100644 src/app/modeler/domain-story-modeler-module.module.ts rename {app => src/app/modeler}/domain-story-modeler/index.js (51%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/change-icon/index.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/change-icon/replace.js rename app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js => src/app/modeler/domain-story-modeler/modeler/change-icon/replaceMenuProvider.js (73%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/change-icon/replaceOptions.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/context-pad/domainStoryContextPadProvider.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/context-pad/index.js rename app/domain-story-modeler/modeler/DomainStoryElementFactory.js => src/app/modeler/domain-story-modeler/modeler/domainStoryElementFactory.js (60%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/domainStoryIdFactory.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/domainStoryRenderer.js rename app/domain-story-modeler/language/DomainStoryRules.js => src/app/modeler/domain-story-modeler/modeler/domainStoryRules.js (69%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/domainStoryUpdater.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/index.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingPreview.js rename app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js => src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingProvider.js (52%) rename app/domain-story-modeler/features/labeling/DSLabelUtil.js => src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelUtil.js (75%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/labeling/dsUpdateLabelHandler.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/labeling/index.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/labeling/position.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/modeling/dSModeling.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/modeling/index.js rename {app/domain-story-modeler/features => src/app/modeler/domain-story-modeler/modeler}/numbering/numbering.js (68%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/palette/domainStoryPalette.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/palette/index.js rename app/domain-story-modeler/modeler/UpdateHandler/DSActivityHandlers.js => src/app/modeler/domain-story-modeler/modeler/updateHandler/dsActivityHandlers.js (64%) create mode 100644 src/app/modeler/domain-story-modeler/modeler/updateHandler/dsElementHandler.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/updateHandler/dsMassRenameHandlers.js create mode 100644 src/app/modeler/domain-story-modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js rename app/domain-story-modeler/util/helpers.js => src/app/modeler/domain-story-modeler/modeler/util.js (60%) create mode 100644 src/app/modeler/domain-story-modeler/test/spec/dSLabelUtilSpec.js create mode 100644 src/app/modeler/domain-story-modeler/test/spec/domainStoryIdFactorySpec.js create mode 100644 src/app/modeler/domain-story-modeler/test/spec/domainStoryModeler.spec.ts create mode 100644 src/app/modeler/domain-story-modeler/test/spec/domainStoryModelingSpec.js rename {test => src/app/modeler/domain-story-modeler/test}/spec/language/Test_2018-08-21.dst (100%) rename {test => src/app/modeler/domain-story-modeler/test}/spec/language/diagram.bpmn (100%) create mode 100644 src/app/modeler/domain-story-modeler/test/spec/language/dstJsons.js create mode 100644 src/app/modeler/domain-story-modeler/test/spec/numberingSpec.js create mode 100644 src/app/modeler/domain-story-modeler/test/spec/positionSpec.js create mode 100644 src/app/modeler/domain-story-modeler/test/spec/testHelper.js create mode 100644 src/app/modeler/domain-story-modeler/test/spec/test_conf.js create mode 100644 src/app/modeler/service/initializer.service.spec.ts create mode 100644 src/app/modeler/service/initializer.service.ts create mode 100644 src/app/modeler/service/modeler.service.spec.ts create mode 100644 src/app/modeler/service/modeler.service.ts create mode 100644 src/app/renderer-service/renderer.service.spec.ts create mode 100644 src/app/renderer-service/renderer.service.ts create mode 100644 src/app/replay-service/replay-state.service.spec.ts create mode 100644 src/app/replay-service/replay-state.service.ts create mode 100644 src/app/replay-service/replay.service.spec.ts create mode 100644 src/app/replay-service/replay.service.ts create mode 100644 src/app/settings-module/component/settings.component.html create mode 100644 src/app/settings-module/component/settings.component.scss create mode 100644 src/app/settings-module/component/settings.component.spec.ts create mode 100644 src/app/settings-module/component/settings.component.ts create mode 100644 src/app/settings-module/service/settings.service.spec.ts create mode 100644 src/app/settings-module/service/settings.service.ts create mode 100644 src/app/settings-module/settings.module.ts create mode 100644 src/app/spec/testHelpers.spec.ts create mode 100644 src/app/spec/util.spec.ts create mode 100644 src/app/storyCreator-service/domain/storyStep.ts create mode 100644 src/app/storyCreator-service/story-creator.service.spec.ts create mode 100644 src/app/storyCreator-service/story-creator.service.ts create mode 100644 src/app/titleAndDescription/description/component/description.component.html create mode 100644 src/app/titleAndDescription/description/component/description.component.scss create mode 100644 src/app/titleAndDescription/description/component/description.component.spec.ts create mode 100644 src/app/titleAndDescription/description/component/description.component.ts create mode 100644 src/app/titleAndDescription/service/title.service.spec.ts create mode 100644 src/app/titleAndDescription/service/title.service.ts create mode 100644 src/app/titleAndDescription/title/component/title.component.html create mode 100644 src/app/titleAndDescription/title/component/title.component.scss create mode 100644 src/app/titleAndDescription/title/component/title.component.spec.ts create mode 100644 src/app/titleAndDescription/title/component/title.component.ts create mode 100644 src/assets/.gitkeep rename {app/domain-story-modeler/language/icon => src/assets}/icons.css (94%) rename {app => src/assets}/logo/Quadrat_wps_de_Farbig.png (100%) rename {app => src/assets}/logo/domainStorytellingIcon.png (100%) rename {app => src/assets}/logo/dst_logo.png (100%) rename {app => src/assets}/logo/edit_blue.png (100%) create mode 100644 src/decs.d.ts create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/styles.scss create mode 100644 src/test.ts delete mode 100644 test/TestHelper.js delete mode 100644 test/spec/features/iconSetCustomization/persistenceSpec.js delete mode 100644 test/spec/features/import/importSpec.js delete mode 100644 test/spec/features/labeling/DSLabelUtilSpec.js delete mode 100644 test/spec/features/labeling/positionSpec.js delete mode 100644 test/spec/features/numbering/numberingSpec.js delete mode 100644 test/spec/features/replay/replaySpec.js delete mode 100644 test/spec/language/DomainStoryIconCustomizationSpec.js delete mode 100644 test/spec/language/DomainStoryIdFactorySpec.js delete mode 100644 test/spec/language/DomainStoryModelerSpec.js delete mode 100644 test/spec/language/DomainStoryModelingSpec.js delete mode 100644 test/spec/language/DownloadSpec.js delete mode 100644 test/spec/language/MathExtensionsSpec.js delete mode 100644 test/spec/language/collectionSpec.js delete mode 100644 test/spec/language/dstJsons.js delete mode 100644 test/spec/language/icon/iconConfigSpec.js delete mode 100644 test/spec/language/icon/iconDictionarySpec.js delete mode 100644 test/spec/language/namingSpec.js delete mode 100644 test/spec/test_conf.js delete mode 100644 test/spec/util/MathExtensionsSpec.js delete mode 100644 test/spec/util/SanitizerSpec.js delete mode 100644 test/spec/util/TypeCheckSpec.js create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.spec.json diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 8aa924d7..00000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-env"] -} \ No newline at end of file diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000..427441dc --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,17 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR +not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..59d9a3a3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 849ddff3..00000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist/ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 869d80a3..00000000 --- a/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "plugin:bpmn-io/es6", - "env": { - "browser": true, - "mocha": true - }, - "globals": { - "assert": true, - "expect": true - }, - "rules": { - "no-fallthrough": "off" - } -} diff --git a/.gitignore b/.gitignore index 8d67a86c..a953dfbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,47 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# IDEs and editors +/.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files .DS_Store -node_modules -dist +Thumbs.db +.idea/runConfigurations.xml +.idea/prettier.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..e1eb6c4b --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../../../:\Users\AZellober\Documents\egon_angular\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..c696deea --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,178 @@ + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/egon_angular.iml b/.idea/egon_angular.iml new file mode 100644 index 00000000..a6e45c7b --- /dev/null +++ b/.idea/egon_angular.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..574a3ea0 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..639900d1 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..90bf723a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 5ac45b17..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // Verwendet IntelliSense zum Ermitteln möglicher Attribute. - // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen. - // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - - { - "type": "chrome", - "request": "launch", - "name": "Chrome gegen localhost starten", - "url": "http://localhost:9013", - "webRoot": "${workspaceFolder}" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index dd653583..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "eslint.autoFixOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - } -} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index c19c11a0..00000000 --- a/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -# Build stage -FROM trion/ng-cli-karma AS builder -LABEL maintainer="nicklas@wiegandt.eu,thesasch_github@wiegandt.net" -USER 1000 -WORKDIR /tmp -# copy app files -COPY . . -# install node packages -RUN npm install && \ -#build package - npm run all - -FROM nginx:stable-alpine -LABEL maintainer="nicklas@wiegandt.eu,thesasch_github@wiegandt.net" -COPY --from=builder --chown=101:101 /tmp/dist /usr/share/nginx/html \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 0f7cf5e6..00000000 --- a/Gruntfile.js +++ /dev/null @@ -1,133 +0,0 @@ -module.exports = function(grunt) { - - require('load-grunt-tasks')(grunt); - require('time-grunt')(grunt); - - var path = require('path'); - - /** - * some dependencies cannot be copied with grunt-copy-deps. - * Instead, resolve external project resources as file path. - */ - function resolvePath(project, file) { - return path.join(path.dirname(require.resolve(project)), file); - } - - grunt.initConfig({ - browserify: { - options: { - browserifyOptions: { - debug: true - }, - transform: [ - ['stringify', { - extensions: ['.bpmn'] - }], - ['babelify', { - global: true, - presets:['@babel/preset-env'] - }] - ] - }, - watch: { - options: { - watch: true - }, - files: { - 'dist/app.js': ['app/app.js'] - } - }, - app: { - files: { - 'dist/app.js': ['app/app.js'] - } - } - }, - clean: ['dist'], - copydeps: { - target: { - options: { - minified: true, - unminified: true, - css: true, - }, - pkg: 'package.json', - dest: 'dist/dependencies/' - } - }, - copy: { - bpmn_js: { - files: [ - { - expand: true, - cwd: resolvePath('bpmn-js', 'dist'), - src: ['**/*.*', '!**/*.js'], - dest: 'dist/dependencies/bpmn-js' - } - ] - }, - dot: { - files: [ - { - expand: true, - cwd: 'node_modules/dot', - src: ['**/*.min.js'], - dest: 'dist/dependencies' - } - ] - }, - app: { - files: [ - { - expand: true, - cwd: 'app/', - src: ['**/*.*', '!**/*.js'], - dest: 'dist' - } - ] - }, - }, - watch: { - options: { - livereload: true - }, - - samples: { - files: ['app/**/*.*'], - tasks: ['copy:app'] - }, - }, - - connect: { - livereload: { - options: { - port: 9013, - livereload: true, - hostname: 'localhost', - open: true, - base: [ - 'dist' - ] - } - } - } - }); - - // tasks - grunt.loadNpmTasks('grunt-contrib-clean'); // https://github.com/gruntjs/grunt-contrib-clean - grunt.loadNpmTasks('grunt-copy-deps'); // https://www.npmjs.com/package/grunt-copy-deps - - grunt.registerTask('build', ['clean', 'copy', 'copydeps', 'browserify:app']); - - grunt.registerTask('auto-build', [ - 'clean', - 'copy', - 'copydeps', - 'browserify:watch', - 'connect:livereload', - 'watch' - ]); - - grunt.registerTask('default', ['build']); - -}; diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 94a9ed02..00000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md index 8375cce6..c2d15985 100644 --- a/README.md +++ b/README.md @@ -1,142 +1,166 @@ -## Domain Story Modeler - -A tool to visualize Domain Stories in your browser. - -### About - -http://domainstorytelling.org - -### Run the Modeler - -You can try the modeler online at https://www.wps.de/modeler. -To run the modeler locally, download the latest release from [GitHub](https://github.com/WPS/domain-story-modeler/releases). -Extract the zip file and open index.html in your browser. - -**Important:** Starting with v1.0.0, the modeler requires that your browser allows third party cookies (How to turn on third party cookies in [Firefox](https://support.mozilla.org/en-US/kb/disable-third-party-cookies) and [Chrome](https://support.google.com/chrome/answer/95647?co=GENIE.Platform%3DDesktop&hl=en)). We rely on storing your modeler's configuration in your browser. That enabled us to develop a cool feature that allows you to choose which icons you want to use for modeling (see below). - -### Usage - -This is a short guide on how to use the Domain Story Modeler. -We recommend to switch your browser to full screen mode (in most browsers: press F11 key) to increase the available modeling space. - -#### Palette - -Shows the icons you can choose to record your Domain Story (actors and work objects), a rectangular shape to group icons into logical units, and two useful modeling tools: - -- The lasso tool lets you select several icons at once to move them easily. -- the space tool creates or removes space. Click and drag the crosshair to the right or down to create space, or drag to the left or to the top to remove space. - -#### Headline - -Click on the headline to change the name of the Domain Story and describe it. The description can contain information about assumptions (e.g. that the domain story describes a "happy path" scenario) and variations (e.g. optional activities). -Use ctrl+enter or alt+enter to add line breaks to the description. - -#### Context Menu - -If you drop an icon from the palette into the canvas you will see a context menu with three sections: - -* Top section: - * wrench icon: change to another the icon - * bin icon: delete the icon - * color-palette icon: change the color of the activity/work object -* Middle section: - * arrow icon: connect two icons with an activity. - * annotation icon: add comments to an actor or work object -* Bottom section: Instead of dragging icons from the palette, you can can choose the next icon from the context menu and an arrow will connect them automatically. - - -#### Naming Actors and Work Objects - -Double click on an actor's or work object's icon to edit the name. To rename multiple work objects, click the dictionary button ![Dictionary Button](/images/spellcheck.png). - -#### Naming and Numbering of Activities - -Activities are depicted as arrows. Double click on an arrow to edit the activity's name. If you model an activity between an actor (person, people and system) and a work object (folder, call, email, conversation, information) it will be numbered automatically. By double clicking on the arrow or the number you can manually change the number. All other numbers are adjusted automatically. - -If you want to model activities that happen simultaneously, check the "multiple" checkbox of an activity. This allows you to use the same number multiple times, indicating that these activities happen in parallel. These steps are shown at once in the replay mode. - -#### Save, Open, and Export Domain Stories - -If you want to save your Domain Story, download it as a `.dst` file by clicking the export button ![Export Button](/images/archive.png) or pressing ctrl+s on your keyboard. To continue working on a Domain Story, import a `.dst` file using the upload button ![Upload Button](/images/unarchive.png). -You can also export your diagram as a `.svg` or `.png` file by clicking on the image button ![SVG Button](/images/image.png) and selecting your preferred format. -Beginning with version 1.2.0, the `.svg` file contains an embedded `.dst` file. That means that you only need to download one file that you can use as picture and also edit it later by importing it again. - -#### Replay - -The replay feature helps you to re-tell a Domain Story sentence by sentence. When you start a replay with the play button ![Play Button](/images/play.png), all activities except the first one disappear. Clicking the forward button ![Forward Button](/images/forward.png) shows the next activity and clicking the previous button ![Previous Button](/images/previous.png) shows the previous one. The current sentence is highlighted. If a Domain Story contains groups, the are hidden an first and then appear as last step at the end of the story. -Editing is disabled in replay mode, but you can zoom (ctrl + mouse wheel up and down), scroll up/down (mouse wheel up and down), and scroll left/right (shift + mouse wheel up and down). You can also move the modeling canvas by keeping the space bar pressed and move the mouse around. The stop the replay, click the stop button ![Stop Button](/images/stop.png). - -#### Keyboard Shortcuts - -Click on ![Keyboard Button](/images/keyboard.png) to display all available keyboard shortcuts. - -#### Configuring the icon set - -We recommend that the icon set is adapted to the domain that you model. You can configure the palette accordingly and share that configuration: - -Click on ![Gear Button](/images/gear.png) to open the icon configuration. Configure your icon set by naming it, selecting which icons should be used as actors or as work objects and order these icons (using drag&drop). You can export your configuration as `.domain` file. To switch between configurations, import a different `.domain` file. - -If you import a Domain Story from a `.dst` file, your icon configuration will change automatically to the one with which the Domain Story was created - even if you do not have the corresponding `.domain` file. - -**Beta feature:** If you want to use icons that are not in the predefined set that comes with the modeler, you can upload your own icons. Different image formats are allowed, but you will achieve best results with SVG because it is scalable (like the icons that come with the modeler). Also, we recommend to use square images because they look better in the pallet and the context pad. If you want a consistent look, consider using the same icon set that we use for the predefined icons: https://material.io/resources/icons/?style=outline - -### Examples - -You can download [these examples](https://wps.github.io/egon.io-website/) and import them into the modeler. - -### For Developers - -Download the source code or clone the repository. -Please note that we use the main branch for development. The main branch contains the latest features and bug fixes, but they might be undocumented and tested less thoroughly than a release. To be on the safe side, stick with the latest release branch. - -Fetch dependencies: - -``` -npm install -``` - -Build and open the modeler in your browser: - -``` -npm run dev -``` - -Create distributable bundle: - -``` -npm run all -``` - -## License - -The Domain Story Modeler is licensed under GPLv3.0. -The Modeler uses [bpmn-js](https://github.com/bpmn-io/bpmn-js) which is licensed under the bpmn.io license. - -### GPLv3.0 - -Copyright (c) 2018-2021 WPS - Workplace Solutions GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -### bpmn.io License - -Copyright (c) 2014-present Camunda Services GmbH - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -The source code responsible for displaying the bpmn.io project watermark that links back to https://bpmn.io as part of rendered diagrams MUST NOT be removed or changed. When this software is being used in a website or application, the watermark must stay fully visible and not visually overlapped by other elements. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +# Egon + +A tool to visualize Domain Stories in your browser. + +### About + +http://domainstorytelling.org + +### Run the Modeler + +You can try the modeler online at https://www.wps.de/modeler. +To run the modeler locally, download the latest release from [GitHub](https://github.com/WPS/domain-story-modeler/releases). +Extract the zip file and open index.html in your browser. + +**Important:** Starting with v1.0.0, the modeler requires that your browser allows third party cookies (How to turn on third party cookies in [Firefox](https://support.mozilla.org/en-US/kb/disable-third-party-cookies) and [Chrome](https://support.google.com/chrome/answer/95647?co=GENIE.Platform%3DDesktop&hl=en)). We rely on storing your modeler's configuration in your browser. That enabled us to develop a cool feature that allows you to choose which icons you want to use for modeling (see below). + +### Usage + +This is a short guide on how to use the Domain Story Modeler. +We recommend switching your browser to full screen mode (in most browsers: press F11 key) to increase the available modeling space. + +#### Palette + +Shows the icons you can choose to record your Domain Story (actors and work objects), a rectangular shape to group icons into logical units, and two useful modeling tools: + +- The lasso tool lets you select several icons at once to move them easily. +- the space tool creates or removes space. Click and drag the crosshair to the right or down to create space, or drag to the left or to the top to remove space. + +#### Headline + +Click on the headline to change the name of the Domain Story and describe it. The description can contain information about assumptions (e.g. that the domain story describes a "happy path" scenario) and variations (e.g. optional activities). +Use ctrl+enter or alt+enter to add line breaks to the description. + +#### Context Menu + +If you drop an icon from the palette into the canvas you will see a context menu with three sections: + +- Top section: + - wrench icon: change to another the icon + - bin icon: delete the icon + - color-palette icon: change the color of the activity/work object +- Middle section: + - arrow icon: connect two icons with an activity. + - annotation icon: add comments to an actor or work object +- Bottom section: Instead of dragging icons from the palette, you can choose the next icon from the context menu, and an arrow will connect them automatically. + +#### Naming Actors and Work Objects + +Double-click on an actor's or work object's icon to edit the name. To rename multiple work objects, click the dictionary button ![Dictionary Button](readme_images/spellcheck.png). + +#### Naming and Numbering of Activities + +Activities are depicted as arrows. Double-click on an arrow to edit the activity's name. If you model an activity between an actor (person, people and system) and a work object (folder, call, email, conversation, information) it will be numbered automatically. By double-clicking on the arrow or the number you can manually change the number. All other numbers are adjusted automatically. + +If you want to model activities that happen simultaneously, check the "multiple" checkbox of an activity. This allows you to use the same number multiple times, indicating that these activities happen in parallel. These steps are shown at once in the replay mode. + +#### Save, Open, and Export Domain Stories + +If you want to save your Domain Story, download it as a `.dst` file by clicking the export button ![Export Button](readme_images/archive.png) or pressing ctrl+s on your keyboard. To continue working on a Domain Story, import a `.dst` file using the upload button ![Upload Button](readme_images/unarchive.png). +You can also export your diagram as a `.svg` or `.png` file by clicking on the image button ![SVG Button](readme_images/image.png) and selecting your preferred format. +Beginning with version 1.2.0, the `.svg` file contains an embedded `.dst` file. That means that you only need to download one file that you can use as picture and also edit it later by importing it again. + +#### Replay + +The replay feature helps you to re-tell a Domain Story sentence by sentence. When you start a replay with the play button ![Play Button](readme_images/play.png), all activities except the first one disappear. Clicking the forward button ![Forward Button](readme_images/forward.png) shows the next activity and clicking the previous button ![Previous Button](readme_images/previous.png) shows the previous one. The current sentence is highlighted. If a Domain Story contains groups, they are hidden at first and then appear as last step at the end of the story. +Editing is disabled in replay mode, but you can zoom (mouse wheel up and down) and scroll (ctrl + mouse wheel up and down). The stop the replay, click the stop button ![Stop Button](readme_images/stop.png). + +#### Keyboard Shortcuts + +Click on ![Keyboard Button](readme_images/keyboard.png) to display all available keyboard shortcuts. + +#### Configuring the icon set + +We recommend that the icon set is adapted to the domain that you model. You can configure the palette accordingly and share that configuration: + +Click on ![Gear Button](readme_images/gear.png) to open the icon configuration. Configure your icon set by naming it, selecting which icons should be used as actors or as work objects and order these icons (using drag&drop). You can export your configuration as `.domain` file. To switch between configurations, import a different `.domain` file. + +If you import a Domain Story from a `.dst` file, your icon configuration will change automatically to the one with which the Domain Story was created - even if you do not have the corresponding `.domain` file. + +**Beta feature:** If you want to use icons that are not in the predefined set that comes with the modeler, you can upload your own icons. Different image formats are allowed, but you will achieve best results with SVG because it is scalable (like the icons that come with the modeler). Also, we recommend to use square images because they look better in the pallet, and the context pad. If you want a consistent look, consider using the same icon set that we use for the predefined icons: https://material.io/resources/icons/?style=outline + +### Examples + +The examples' directory contains `.dst` files that you can import to the modeler. They give you an idea how a Domain Story might look like. Use the replay feature to read the story sentence by sentence. +The examples' directory also contains a SVG file for every Domain Story. The images were created using the modeler. + +### For Developers + +Download the source code or clone the repository. +Please note that we use the main branch for development. The main branch contains the latest features and bug fixes, but they might be undocumented and tested less thoroughly than a release. To be on the safe side, stick with the latest release branch. + +Fetch dependencies: + +``` +npm install +``` + +Build and open the modeler in your browser: + +``` +npm run dev +``` + +Create distributable bundle: + +``` +npm run all +``` + +## License + +The Domain Story Modeler is licensed under GPLv3.0. +The Modeler uses [bpmn-js](https://github.com/bpmn-io/bpmn-js) which is licensed under the bpmn.io license. + +### GPLv3.0 + +Copyright (c) 2018-2020 WPS - Workplace Solutions GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +### bpmn.io License + +Copyright (c) 2014-2016 camunda Services GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +The source code responsible for displaying the bpmn.io logo (two green cogwheels in a box) that links back to http://bpmn.io as part of rendered diagrams MUST NOT be removed or changed. When this software is being used in a website or application, the logo must stay fully visible and not visually overlapped by other elements. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/angular.json b/angular.json new file mode 100644 index 00000000..bec09c3e --- /dev/null +++ b/angular.json @@ -0,0 +1,122 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "cli": { + "analytics": false + }, + "version": 1, + "newProjectRoot": "projects", + "projects": { + "egon": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + }, + "@schematics/angular:application": { + "strict": true + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "allowedCommonJsDependencies": ["util", "object-refs", "hammerjs"], + "outputPath": "dist/egon", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "assets": ["src/favicon.ico", "src/assets"], + "styles": [ + "node_modules/diagram-js/assets/diagram-js.css", + "node_modules/bpmn-js/dist/assets/bpmn-font/css/bpmn.css", + "src/styles.scss" + ], + "scripts": [], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, + "sourceMap": true, + "optimization": false, + "namedChunks": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ] + } + }, + "defaultConfiguration": "" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "egon:build" + }, + "configurations": { + "production": { + "browserTarget": "egon:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "egon:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], + "scripts": [] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "egon:serve" + }, + "configurations": { + "production": { + "devServerTarget": "egon:serve:production" + } + } + } + } + } + }, + "defaultProject": "egon" +} diff --git a/app/app.js b/app/app.js deleted file mode 100644 index 0e97aa49..00000000 --- a/app/app.js +++ /dev/null @@ -1,849 +0,0 @@ -'use strict'; - -import 'regenerator-runtime/runtime'; -import './domain-story-modeler/util/MathExtensions'; -import './domain-story-modeler/util/ArrayExtensions'; -import DomainStoryModeler from './domain-story-modeler'; -import DSActivityHandlers from './domain-story-modeler/modeler/UpdateHandler/DSActivityHandlers'; -import { toggleStashUse } from './domain-story-modeler/features/labeling/DSLabelEditingProvider'; -import { version } from '../package.json'; -import DSMassRenameHandlers from './domain-story-modeler/modeler/UpdateHandler/DSMassRenameHandlers'; -import { - getActivityDictionary, - cleanDictionaries, - openDictionary, - dictionaryClosed -} from './domain-story-modeler/features/dictionary/dictionary'; -import { - isPlaying, - initReplay, - getReplayOn -} from './domain-story-modeler/features/replay/replay'; -import { autocomplete } from './domain-story-modeler/features/labeling/DSLabelUtil'; -import { - updateExistingNumbersAtEditing, - getNumberRegistry, - getMultipleNumberRegistry, - setNumberIsMultiple -} from './domain-story-modeler/features/numbering/numbering'; -import { - ACTIVITY, - ACTOR, - WORKOBJECT -} from './domain-story-modeler/language/elementTypes'; -import { - downloadDST, - createObjectListForDSTDownload -} from './domain-story-modeler/features/export/dstDownload'; -import { - downloadSVG, - setEncoded -} from './domain-story-modeler/features/export/svgDownload'; -import { - initStoryDownload, - downloadStory -} from './domain-story-modeler/features/export/storyDownload'; -import { downloadPNG } from './domain-story-modeler/features/export/pngDownload'; -import { - loadPersistedDST, - initImports, - getDescriptionInputLast, - setDescriptionInputLast, - getTitleInputLast, - setTitleInputLast -} from './domain-story-modeler/features/import/import'; -import { - getActivitesFromActors, - initElementRegistry -} from './domain-story-modeler/language/canvasElementRegistry'; -import { createListOfAllIcons } from './domain-story-modeler/features/iconSetCustomization/customizationDialog'; -import { - setToDefault, - saveIconConfiguration, - storyPersistTag, - exportConfiguration -} from './domain-story-modeler/features/iconSetCustomization/persitence'; -import { - debounce -} from './domain-story-modeler/util/helpers'; -import { - isDirty, - makeDirty -} from './domain-story-modeler/features/export/dirtyFlag'; -import DSElementHandler from './domain-story-modeler/modeler/UpdateHandler/DSElementHandler'; -import headlineAndDescriptionUpdateHandler from './domain-story-modeler/modeler/UpdateHandler/headlineAndDescriptionUpdateHandler'; - -const modeler = new DomainStoryModeler({ - container: '#canvas', - keyboard: { - bindTo: document - }, - - // Disable BPMN-SearchModule, also re-enables browser Search - additionalModules:[ - { - bpmnSearch:['value' , 'foo'] - } - ] -}); - -const canvas = modeler.get('canvas'); -const elementRegistry = modeler.get('elementRegistry'); -const eventBus = modeler.get('eventBus'); -const commandStack = modeler.get('commandStack'); -const selection = modeler.get('selection'); - -initialize(canvas, elementRegistry, version, modeler, eventBus, saveSVG); - -// interal variables -let keysPressed = []; - -// HTML-Elements -let modal = document.getElementById('modal'), - arrow = document.getElementById('arrow'), - - // logos - wpsLogo = document.getElementById('imgWPS'), - dstLogo = document.getElementById('imgDST'), - - // text-elements - wpsInfotext = document.getElementById('wpsLogoInnerText'), - wpsInfotextPart2 = document.getElementById('wpsLogoInnerText2'), - dstInfotext = document.getElementById('dstLogoInnerText'), - - // labels - headline = document.getElementById('headline'), - title = document.getElementById('title'), - info = document.getElementById('info'), - infoText = document.getElementById('infoText'), - - // inputs - titleInput = document.getElementById('titleInput'), - activityInputNumber = document.getElementById('inputNumber'), - activityInputLabelWithNumber = document.getElementById('inputLabel'), - activityInputLabelWithoutNumber = document.getElementById('labelInputLabel'), - multipleNumberAllowedCheckBox = document.getElementById( - 'multipleNumberAllowed' - ), - - // dialogs - headlineDialog = document.getElementById('dialog'), - activityWithNumberDialog = document.getElementById('numberDialog'), - activityWithoutNumberDialog = document.getElementById('labelDialog'), - incompleteStoryDialog = document.getElementById('incompleteStoryInfo'), - wpsLogoDialog = document.getElementById('wpsLogoInfo'), - dstLogoDialog = document.getElementById('dstLogoInfo'), - dictionaryDialog = document.getElementById('dictionaryDialog'), - keyboardShortcutInfo = document.getElementById('keyboardShortcutInfo'), - downloadDialog = document.getElementById('downloadDialog'), - noContentOnCanvasDialog = document.getElementById('noContentOnCanvasInfo'), - - // container - iconCustomizationContainer = document.getElementById( - 'iconCustomizationContainer' - ), - activityDictionaryContainer = document.getElementById( - 'activityDictionaryContainer' - ), - workobjectDictionaryContainer = document.getElementById( - 'workobjectDictionaryContainer' - ), - - // buttons - headlineDialogButtonSave = document.getElementById('saveButton'), - headlineDialogButtonCancel = document.getElementById('quitButton'), - exportButton = document.getElementById('export'), - dictionaryButtonOpen = document.getElementById('dictionaryButton'), - dictionaryButtonSave = document.getElementById('closeDictionaryButtonSave'), - dictionaryButtonCancel = document.getElementById( - 'closeDictionaryButtonCancel' - ), - activityNumberDialogButtonSave = document.getElementById('numberSaveButton'), - activityNumberDialogButtonCancel = document.getElementById( - 'numberQuitButton' - ), - activityLabelButtonSave = document.getElementById('labelSaveButton'), - activityLabelButtonCancel = document.getElementById('labelQuitButton'), - buttonImageDownloads = document.getElementById('buttonImageDownloads'), - buttonImageDownloadsCancel = document.getElementById( - 'downloadDialogCancelButton' - ), - pngSaveButton = document.getElementById('buttonPNG'), - svgSaveButton = document.getElementById('buttonSVG'), - storySaveButton = document.getElementById('buttonDownloadStory'), - wpsLogoButton = document.getElementById('closeWPSLogoInfo'), - dstLogoButton = document.getElementById('closeDSTLogoInfo'), - exportConfigurationButton = document.getElementById( - 'exportConfigurationButton' - ), - resetIconCustomizationButton = document.getElementById( - 'resetIconConfigButton' - ), - cancelIconCustomizationButton = document.getElementById( - 'cancelIconCustomizationButton' - ), - iconCustomizationSaveButton = document.getElementById( - 'customIconConfigSaveButton' - ), - iconCustomizationButton = document.getElementById('iconCustomizationButton'), - keyboardShortcutInfoButton = document.getElementById( - 'keyboardShortcutInfoButton' - ), - keyboardShortcutInfoButtonCancel = document.getElementById( - 'keyboardShortcutInfoDialogButtonCancel' - ), - incompleteStoryDialogButtonCancel = document.getElementById( - 'closeIncompleteStoryInfo' - ), - noContentOnCanvasDialogCuttonCancel = document.getElementById( - 'closeNoContentOnCanvasInfo' - ); - -wpsInfotext.innerText = - 'Domain Story Modeler v' + - version + - '\nA tool to visualize Domain Stories in the browser.\nProvided by'; -wpsInfotextPart2.innerText = ' and licensed under GPLv3.'; -dstInfotext.innerText = 'Learn more about Domain Storytelling at'; - -// ---- -function initialize( - canvas, - elementRegistry, - version, - modeler, - eventBus, - saveSVG -) { - - // we need to initiate the activity commandStack elements - DSActivityHandlers(commandStack, eventBus); - DSMassRenameHandlers(commandStack, eventBus); - DSElementHandler(commandStack, eventBus); - headlineAndDescriptionUpdateHandler(commandStack); - - const exportArtifacts = debounce(saveSVG, 500); - modeler.on('commandStack.changed', exportArtifacts); - - initReplay(canvas, selection); - initStoryDownload(canvas, selection, modeler); - initElementRegistry(elementRegistry); - initImports(elementRegistry, version, modeler, eventBus, saveSVG); - - modeler.createDiagram(); - - // expose bpmnjs to window for debugging purposes - window.bpmnjs = modeler; - - // if there is a persited Story, load it - if (localStorage.getItem(storyPersistTag)) { - loadPersistedDST(modeler); - - eventBus.fire('commandStack.changed', debounce(saveSVG, 500)); - } - - debounce(saveSVG, 500); -} - -document.onkeydown = function(e) { - if (e.ctrlKey && e.key == 's') { - initiateDSTDownload(); - - e.preventDefault(); - e.stopPropagation(); - } else if (e.ctrlKey && e.key == 'l') { - document.getElementById('import').click(); - e.preventDefault(); - e.stopPropagation(); - } -}; - -function initiateDSTDownload() { - if (canvas._rootElement) { - const objects = createObjectListForDSTDownload(version); - - const json = JSON.stringify(objects); - const filename = - title.innerText + '_' + new Date().toISOString().slice(0, 10); - - // start file download - downloadDST(filename, json); - } else { - showNoContentDialog(); - } -} - -// eventBus listeners -eventBus.on('element.dblclick', function(e) { - if (!isPlaying()) { - const element = e.element; - if (element.type == ACTIVITY) { - activityDoubleClick(element); - } else { - const renderedNumberRegistry = getNumberRegistry(); - - if (renderedNumberRegistry.length > 1) { - const allActivities = getActivitesFromActors(); - - if (allActivities.length > 0) { - const htmlCanvas = document.getElementById('canvas'); - const container = htmlCanvas.getElementsByClassName('djs-container'); - const svgElements = container[0].getElementsByTagName('svg'); - const outerSVGElement = svgElements[0]; - const viewport = outerSVGElement.getElementsByClassName( - 'viewport' - )[0]; - let transform = viewport.getAttribute('transform'); - let transformX = 0, - transformY = 0, - zoomX = 1, - zoomY = 1; - let nums; - - const clickX = e.originalEvent.offsetX; - const clickY = e.originalEvent.offsetY; - - if (transform) { - transform = transform.replace('matrix(', ''); - transform.replace(')'); - nums = transform.split(','); - zoomX = parseFloat(nums[0]); - zoomY = parseFloat(nums[3]); - transformX = parseInt(nums[4]); - transformY = parseInt(nums[5]); - } - - const width = 25 * zoomX; - const height = 22 * zoomY; - for (let i = 1; i < renderedNumberRegistry.length; i++) { - const currentNum = renderedNumberRegistry[i]; - if (currentNum) { - const tspan = currentNum.getElementsByTagName('tspan')[0]; - const tx = tspan.getAttribute('x'); - const ty = tspan.getAttribute('y'); - const tNumber = parseInt(tspan.innerHTML); - - const elementX = tx * zoomX + (transformX - 5 * zoomX); - const elementY = ty * zoomY + (transformY - 15 * zoomY); - - allActivities.forEach(activity => { - const activityNumber = +activity.businessObject.number; - if (activityNumber === tNumber) { - if ( - positionsMatch( - width, - height, - elementX, - elementY, - clickX, - clickY - ) - ) { - activityDoubleClick(activity); - } - } - }); - } - } - } - } - } - } -}); - -function positionsMatch(width, height, elementX, elementY, clickX, clickY) { - if (clickX > elementX && clickX < elementX + width) { - if (clickY > elementY && clickY < elementY + height) { - return true; - } - } - return false; -} - -function activityDoubleClick(activity) { - const source = activity.source; - - const dict = getActivityDictionary(); - autocomplete(activityInputLabelWithNumber, dict, activity); - autocomplete(activityInputLabelWithoutNumber, dict, activity); - - // ensure the right number when changing the direction of an activity - toggleStashUse(false); - - if (source.type.includes(ACTOR)) { - showActivityWithNumberDialog(activity); - document.getElementById('inputLabel').focus(); - } else if (source.type.includes(WORKOBJECT)) { - showActivityWithoutLabelDialog(activity); - document.getElementById('labelInputLabel').focus(); - } - - // onclick and key functions, that need the element to which the event belongs - activityLabelButtonSave.onclick = function() { - saveActivityInputLabelWithoutNumber(activity); - }; - - activityNumberDialogButtonSave.onclick = function() { - saveActivityInputLabelWithNumber(activity); - }; - - activityInputLabelWithoutNumber.onkeydown = function(e) { - checkPressedKeys(e.keyCode, 'labelDialog', activity); - }; - - activityInputNumber.onkeydown = function(e) { - checkPressedKeys(e.keyCode, 'numberDialog', activity); - }; - - activityInputLabelWithNumber.onkeydown = function(e) { - checkPressedKeys(e.keyCode, 'numberDialog', activity); - }; -} - -// when in replay, do not allow any interaction on the canvas -eventBus.on( - [ - 'element.click', - 'element.dblclick', - 'element.mousedown', - 'drag.init', - 'canvas.viewbox.changing', - 'autoPlace', - 'popupMenu.open' - ], - 10000000000, - function(event) { - if (isPlaying()) { - event.stopPropagation(); - event.preventDefault(); - } - } -); - -// HTML-Element event listeners - -// show a dialog if there are unsaved changes in the domain Story -window.onbeforeunload = function() { - if (isDirty()) return true; -}; - -headline.addEventListener('click', function() { - showHeadlineDialog(); -}); - -wpsLogo.addEventListener('click', function() { - modal.style.display = 'block'; - wpsLogoDialog.style.display = 'block'; -}); - -dstLogo.addEventListener('click', function() { - modal.style.display = 'block'; - dstLogoDialog.style.display = 'block'; -}); - -wpsLogoButton.addEventListener('click', function() { - wpsLogoDialog.style.display = 'none'; - modal.style.display = 'none'; -}); - -dstLogoButton.addEventListener('click', function() { - dstLogoDialog.style.display = 'none'; - modal.style.display = 'none'; -}); - -buttonImageDownloads.addEventListener('click', function() { - downloadDialog.style.display = 'block'; - modal.style.display = 'block'; -}); - -headlineDialogButtonSave.addEventListener('click', function() { - saveHeadlineDialog(); -}); - -headlineDialogButtonCancel.addEventListener('click', function() { - closeHeadlineDialog(); -}); - -buttonImageDownloadsCancel.addEventListener('click', function() { - closeImageDownloadDialog(); -}); - -activityNumberDialogButtonCancel.addEventListener('click', function() { - closeActivityInputLabelWithNumberDialog(); -}); - -keyboardShortcutInfoButtonCancel.addEventListener('click', function() { - closeKeyboardShortcutDialog(); -}); - -activityLabelButtonCancel.addEventListener('click', function() { - closeActivityInputLabelWithoutNumberDialog(); -}); - -titleInput.addEventListener('keydown', function(e) { - checkPressedKeys(e.keyCode, 'titleDialog'); -}); - -titleInput.addEventListener('keyup', function(e) { - keyReleased(keysPressed, e.keyCode); -}); - -info.addEventListener('keydown', function(e) { - checkPressedKeys(e.keyCode, 'infoDialog'); -}); - -info.addEventListener('keyup', function(e) { - keyReleased(keysPressed, e.keyCode); -}); - -activityInputLabelWithNumber.addEventListener('keyup', function(e) { - keyReleased(keysPressed, e.keyCode); -}); - -activityDictionaryContainer.addEventListener('keydown', function(e) { - dictionaryKeyBehaviour(e); -}); - -workobjectDictionaryContainer.addEventListener('keydown', function(e) { - dictionaryKeyBehaviour(e); -}); - -dictionaryButtonOpen.addEventListener('click', function() { - openDictionary(); -}); - -dictionaryButtonSave.addEventListener('click', function(e) { - dictionaryClosed( - commandStack, - activityDictionaryContainer, - workobjectDictionaryContainer - ); - - dictionaryDialog.style.display = 'none'; - modal.style.display = 'none'; -}); - -dictionaryButtonCancel.addEventListener('click', function(e) { - dictionaryDialog.style.display = 'none'; - modal.style.display = 'none'; -}); - -exportButton.addEventListener('click', function() { - initiateDSTDownload(); -}); - -svgSaveButton.addEventListener('click', function() { - const filename = - title.innerText + '_' + new Date().toISOString().slice(0, 10); - downloadSVG(filename); - closeImageDownloadDialog(); -}); - -pngSaveButton.addEventListener('click', function() { - downloadPNG(); - closeImageDownloadDialog(); -}); - -storySaveButton.addEventListener('click', function() { - const filename = - title.innerText + '_' + new Date().toISOString().slice(0, 10); - downloadStory(filename); - closeImageDownloadDialog(); -}); - -incompleteStoryDialogButtonCancel.addEventListener('click', function() { - modal.style.display = 'none'; - incompleteStoryDialog.style.display = 'none'; -}); - -noContentOnCanvasDialogCuttonCancel.addEventListener('click', function() { - closeNoContentDialog(); -}); - -keyboardShortcutInfoButton.addEventListener('click', function() { - modal.style.display = 'block'; - keyboardShortcutInfo.style.display = 'block'; -}); - -iconCustomizationSaveButton.addEventListener('click', function() { - saveIconConfiguration(); -}); - -cancelIconCustomizationButton.addEventListener('click', function() { - modal.style.display = 'none'; - iconCustomizationContainer.style.display = 'none'; -}); - -iconCustomizationButton.addEventListener('click', function() { - modal.style.display = 'block'; - iconCustomizationContainer.style.display = 'block'; - createListOfAllIcons(); -}); - -resetIconCustomizationButton.addEventListener('click', function() { - setToDefault(); -}); - -exportConfigurationButton.addEventListener('click', function() { - exportConfiguration(); -}); - -// ----- - -function dictionaryKeyBehaviour(event) { - const KEY_ENTER = 13; - const KEY_ESC = 27; - - if (event.keyCode === KEY_ENTER) { - dictionaryClosed( - commandStack, - activityDictionaryContainer, - workobjectDictionaryContainer - ); - dictionaryDialog.style.display = 'none'; - modal.style.display = 'none'; - } else if (event.keyCode === KEY_ESC) { - dictionaryDialog.style.display = 'none'; - modal.style.display = 'none'; - } -} - -function checkPressedKeys(keyCode, dialog, element) { - const KEY_ENTER = 13; - const KEY_SHIFT = 16; - const KEY_CTRL = 17; - const KEY_ALT = 18; - const KEY_ESC = 27; - - keysPressed[keyCode] = true; - - if (keysPressed[KEY_ESC]) { - closeHeadlineDialog(); - closeActivityInputLabelWithoutNumberDialog(); - closeActivityInputLabelWithNumberDialog(); - } else if ( - (keysPressed[KEY_CTRL] && keysPressed[KEY_ENTER]) || - (keysPressed[KEY_ALT] && keysPressed[KEY_ENTER]) - ) { - if (dialog == 'infoDialog') { - info.value += '\n'; - } - } else if (keysPressed[KEY_ENTER] && !keysPressed[KEY_SHIFT]) { - if (dialog == 'titleDialog' || dialog == 'infoDialog') { - saveHeadlineDialog(); - } else if (dialog == 'labelDialog') { - saveActivityInputLabelWithoutNumber(element); - } else if (dialog == 'numberDialog') { - saveActivityInputLabelWithNumber(element); - } - } -} - -// dialog functions - -function showNoContentDialog() { - noContentOnCanvasDialog.style.display = 'block'; - modal.style.display = 'block'; -} - -function closeNoContentDialog() { - noContentOnCanvasDialog.style.display = 'none'; - modal.style.display = 'none'; -} - -function closeHeadlineDialog() { - keysPressed = []; - headlineDialog.style.display = 'none'; - modal.style.display = 'none'; - arrow.style.display = 'none'; -} - -function closeImageDownloadDialog() { - downloadDialog.style.display = 'none'; - modal.style.display = 'none'; -} - -function showHeadlineDialog() { - if (getDescriptionInputLast() == '') { - setDescriptionInputLast(infoText.innerText); - } - if (getTitleInputLast() == '') { - setTitleInputLast(title.innerText); - } - info.value = getDescriptionInputLast(); - titleInput.value = getTitleInputLast(); - headlineDialog.style.display = 'block'; - modal.style.display = 'block'; - arrow.style.display = 'block'; - titleInput.focus(); -} - -function saveHeadlineDialog() { - - let inputTitle = titleInput.value; - const inputText = info.value; - if (!inputTitle) { - inputTitle = ''; - } - - const headerValues = { - newTitle: inputTitle, - newDescription: inputText, - oldTitle: title.innerText, - oldDescription:infoText.innerText - }; - commandStack.execute('story.updateHeadlineAndDescription', headerValues); - - // to update the title of the svg, we need to tell the command stack, that a value has changed - const exportArtifacts = debounce(saveSVG, 500); - - eventBus.fire('commandStack.changed', exportArtifacts); - - - keysPressed = []; - makeDirty(); - closeHeadlineDialog(); -} - -function showActivityWithNumberDialog(event) { - modal.style.display = 'block'; - activityWithNumberDialog.style.display = 'block'; - activityInputLabelWithNumber.value = ''; - activityInputNumber.value = ''; - - const numberAsNumber = +event.businessObject.number; - const numberIsAlloedMultipleTimes = - getMultipleNumberRegistry()[numberAsNumber] === true; - - multipleNumberAllowedCheckBox.checked = numberIsAlloedMultipleTimes; - - if (event.businessObject.name != null) { - activityInputLabelWithNumber.value = event.businessObject.name; - } - if (event.businessObject.number != null) { - activityInputNumber.value = event.businessObject.number; - } -} - -function showActivityWithoutLabelDialog(event) { - modal.style.display = 'block'; - activityWithoutNumberDialog.style.display = 'block'; - activityInputLabelWithoutNumber.value = ''; - - if (event.businessObject.name != null) { - activityInputLabelWithoutNumber.value = event.businessObject.name; - } -} - -function closeKeyboardShortcutDialog() { - keyboardShortcutInfo.style.display = 'none'; - modal.style.display = 'none'; -} - -function closeActivityInputLabelWithNumberDialog() { - activityInputLabelWithNumber.value = ''; - activityInputNumber.value = ''; - keysPressed = []; - activityWithNumberDialog.style.display = 'none'; - modal.style.display = 'none'; -} - -function saveActivityInputLabelWithNumber(element) { - let labelInput = ''; - let numberInput = ''; - const multipleNumberAllowed = multipleNumberAllowedCheckBox.checked; - - const activityDictionary = getActivityDictionary(); - if (activityInputLabelWithNumber != '') { - labelInput = activityInputLabelWithNumber.value; - if (!activityDictionary.includes(labelInput)) { - activityDictionary.push(labelInput); - } - } - if (activityInputNumber != '') { - numberInput = activityInputNumber.value; - } - const numberInputAsNumber = +numberInput; - - activityWithNumberDialog.style.display = 'none'; - modal.style.display = 'none'; - - activityInputLabelWithNumber.value = ''; - activityInputNumber.value = ''; - keysPressed = []; - - const activitiesFromActors = getActivitesFromActors(); - const index = activitiesFromActors.indexOf(element); - - activitiesFromActors.splice(index, 1); - - setNumberIsMultiple(numberInputAsNumber, multipleNumberAllowed); - element.businessObject.multipleNumberAllowed = multipleNumberAllowed; - - commandStack.execute('activity.changed', { - businessObject: element.businessObject, - newLabel: labelInput, - newNumber: numberInput, - element: element - }); - if (element.businessObject.multipleNumberAllowed !== false) { - if (getMultipleNumberRegistry()[numberInputAsNumber] === false) { - updateExistingNumbersAtEditing( - activitiesFromActors, - numberInput, - eventBus - ); - } - } else if (element.businessObject.multipleNumberAllowed === false) { - updateExistingNumbersAtEditing(activitiesFromActors, numberInput, eventBus); - } - cleanDictionaries(); -} - -function closeActivityInputLabelWithoutNumberDialog() { - activityInputLabelWithoutNumber.value = ''; - keysPressed = []; - activityWithoutNumberDialog.style.display = 'none'; - modal.style.display = 'none'; -} - -function saveActivityInputLabelWithoutNumber(element) { - let labelInput = ''; - const activityDictionary = getActivityDictionary(); - if (activityInputLabelWithoutNumber != '') { - labelInput = activityInputLabelWithoutNumber.value; - if (!activityDictionary.includes(labelInput)) { - activityDictionary.push(labelInput); - } - } - - activityWithoutNumberDialog.style.display = 'none'; - modal.style.display = 'none'; - - activityInputLabelWithoutNumber.value = ''; - keysPressed = []; - - commandStack.execute('activity.changed', { - businessObject: element.businessObject, - newLabel: labelInput, - element: element - }); - - cleanDictionaries(); -} - -function keyReleased(keysPressed, keyCode) { - keysPressed[keyCode] = false; -} - -// SVG functions -async function saveSVG(done) { - try { - const result = await modeler.saveSVG(done); - if (!getReplayOn()) { - setEncoded(result.svg); - } - } catch (err) { - alert('There was an error saving the SVG.\n' + err); - } -} diff --git a/app/domain-story-modeler/features/change-icon/Replace.js b/app/domain-story-modeler/features/change-icon/Replace.js deleted file mode 100644 index 2154bf2d..00000000 --- a/app/domain-story-modeler/features/change-icon/Replace.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -import { assign } from 'min-dash'; - -/** - * service that allow replacing of elements. - */ -export default function Replace(modeling) { - - this._modeling = modeling; - -} - -/** - * @param {Element} oldElement - element to be replaced - * @param {Object} newElementData - containing information about the new Element, for example height, width, type. - * @param {Object} options - custom options that will be attached to the context. It can be used to inject data - * that is needed in the command chain. For example it could be used in - * eventbus.on('commandStack.shape.replace.postExecute') to change shape attributes after - * shape creation. - */ -function replaceElement(oldElement, newElementData, modeling) { - - // let modeling = this._modeling; - - let newElement = setCenterOfElement(newElementData, oldElement, newElement, modeling); - let outgoingActivities = newElement.outgoing; - let incomingActivties = newElement.incoming; - - outgoingActivities.forEach(element => { - element.businessObject.source = newElement.id; - }); - - incomingActivties.forEach(element => { - element.businessObject.target = newElement.id; - }); - - return newElement; -} - -function setCenterOfElement(newElementData, oldElement, newElement, modeling) { - newElementData.x = Math.ceil(oldElement.x + (newElementData.width || oldElement.width) / 2); - newElementData.y = Math.ceil(oldElement.y + (newElementData.height || oldElement.height) / 2); - - assign(newElementData, { name: oldElement.businessObject.name }); - - return modeling.replaceShape(oldElement, newElementData, {}); -} - - -Replace.prototype.replaceElement = replaceElement; \ No newline at end of file diff --git a/app/domain-story-modeler/features/change-icon/ReplaceOptions.js b/app/domain-story-modeler/features/change-icon/ReplaceOptions.js deleted file mode 100644 index 6272fe9e..00000000 --- a/app/domain-story-modeler/features/change-icon/ReplaceOptions.js +++ /dev/null @@ -1,52 +0,0 @@ -import { getNameFromType } from '../../language/naming'; -import { getIconForType } from '../../language/icon/iconDictionary'; -import { getTypeDictionary } from '../../language/icon/dictionaries'; -import { ACTOR, WORKOBJECT } from '../../language/elementTypes'; - -'use strict'; - -export function actorReplaceOptions(name) { - const actorTypes = getTypeDictionary(ACTOR); - - let replaceOption = {}; - let i=0; - - actorTypes.keysArray().forEach(actorType => { - if (!name.includes(actorType)) { - const typeName = getNameFromType(actorType); - replaceOption[i] ={ - label: 'Change to ' + typeName, - actionName: 'replace-with-actor-' + typeName.toLowerCase(), - className: getIconForType(actorType), - target: { - type: actorType - } - }; - i++; - } - }); - return replaceOption; -} - -export function workObjectReplaceOptions(name) { - const workObjectTypes = getTypeDictionary(WORKOBJECT); - - let replaceOption = {}; - let i=0; - - workObjectTypes.keysArray().forEach(workObjectType => { - if (!name.includes(workObjectType)) { - const typeName = getNameFromType(workObjectType); - replaceOption[i] = { - label: 'Change to ' + typeName, - actionName: 'replace-with-actor-' + typeName, - className: getIconForType(workObjectType), - target: { - type: workObjectType - } - }; - } - i++; - }); - return replaceOption; -} diff --git a/app/domain-story-modeler/features/change-icon/index.js b/app/domain-story-modeler/features/change-icon/index.js deleted file mode 100644 index 6141fea8..00000000 --- a/app/domain-story-modeler/features/change-icon/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -import ReplaceMenuProvider from './ReplaceMenuProvider'; -import DSModeling from '../modeling/DSModeling'; - - -export default { - __depends__: [ - ], - __init__: [ 'replaceMenuProvider' ], - replaceMenuProvider: [ 'type', ReplaceMenuProvider ], - modeling: [ 'type', DSModeling ], -}; \ No newline at end of file diff --git a/app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js b/app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js deleted file mode 100644 index 14bb55f7..00000000 --- a/app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js +++ /dev/null @@ -1,364 +0,0 @@ -'use strict'; - -import inherits from 'inherits'; - -import ContextPadProvider from 'bpmn-js/lib/features/context-pad/ContextPadProvider'; -import Picker from 'vanilla-picker'; - -import { - assign, - bind -} from 'min-dash'; -import { generateAutomaticNumber } from '../numbering/numbering'; -import { getNameFromType } from '../../language/naming'; -import { getIconForType } from '../../language/icon/iconDictionary'; -import { ACTIVITY, ACTOR, GROUP, TEXTANNOTATION, WORKOBJECT } from '../../language/elementTypes'; -import { getTypeDictionary } from '../../language/icon/dictionaries'; -import { makeDirty } from '../export/dirtyFlag'; -import { getAllStandardIconKeys } from '../../language/icon/all_Icons'; -import { getAllGroups, getAllCanvasObjects, getAllActivities } from '../../language/canvasElementRegistry'; - -export default function DomainStoryContextPadProvider(injector, connect, translate, elementFactory, create, canvas, contextPad, popupMenu, replaceMenuProvider, commandStack, eventBus, modeling) { - - - let selectedID; - let startConnect; - - injector.invoke(ContextPadProvider, this); - let autoPlace = injector.get('autoPlace', false); - - let cached = bind(this.getContextPadEntries, this); - - const picker = new Picker(document.getElementById('pickerAnchor')); - const pickerOptions = { - color: 'black', - popup: 'bottom' - }; - - picker.setOptions(pickerOptions); - picker.onDone = function(color) { - if (selectedID.includes('shape')) { - const allGroups = getAllGroups(); - const allCanvasObjects = getAllCanvasObjects(); - - const isDone=pickerFunction(allCanvasObjects, color); - - if (!isDone) { - pickerFunction(allGroups, color); - } - } - else if (selectedID.includes('connection')) { - const allActivities = getAllActivities(); - pickerFunction(allActivities, color); - } - }; - - function pickerFunction(objects, color) { - let isDone = false; - objects.forEach(elem => { - if (elem.id == selectedID) { - - const context = { - businessObject: elem.businessObject, - newColor: color.hex, - element: elem - }; - - commandStack.execute('element.colorChange', context); - makeDirty(); - isDone=true; - } - }); - return isDone; - } - - popupMenu.registerProvider('ds-replace', replaceMenuProvider); - popupMenu.registerProvider('bpmn-replace', replaceMenuProvider); - - this.getContextPadEntries = function(element) { - const allStandardIconKeys = getAllStandardIconKeys(); - let actions = cached(element); - - startConnect= function(event, element, autoActivate) { - connect.start(event, element, autoActivate); - }; - - if (element.type.includes(WORKOBJECT)) { - if (allStandardIconKeys.includes(element.type.replace(WORKOBJECT, ''))) { - addColorChange(actions); - } - addConnectWithActivity(actions, startConnect); - addTextAnnotation(actions); - addActors(appendAction, actions); - addWorkObjects(appendAction, actions); - addChangeWorkObjectTypeMenu(actions); - } - - else if (element.type.includes(ACTOR)) { - if (allStandardIconKeys.includes(element.type.replace(ACTOR, ''))) { - addColorChange(actions); - } - addConnectWithActivity(actions, startConnect); - addTextAnnotation(actions); - addWorkObjects(appendAction, actions); - addChangeActorTypeMenu(actions); - } - - else if (element.type.includes(GROUP)) { - delete actions.delete; - addTextAnnotation(actions); - assign(actions, { - 'deleteGroup': { - group: 'edit', - className: 'bpmn-icon-trash', - title: 'Remove Group without Child-Elements', - action: { - click: function(event, element) { - modeling.removeGroup(element); - makeDirty(); - } - } - } - }); - addColorChange(actions); - } - - else if (element.type.includes(ACTIVITY)) { - moveDeleteActionToEndOfArray(actions); - - addColorChange(actions); - - assign(actions, { - 'delete': { - group: 'edit', - className: 'bpmn-icon-trash', - title: 'Remove', - action: { - click: function(event, element) { - modeling.removeElements({ element }); - makeDirty(); - } - } - } - }); - } - - return actions; - }; - - function moveDeleteActionToEndOfArray(actions) { - delete actions.delete; - - assign(actions, { - 'changeDirection': { - group: 'edit', - className: 'icon-domain-story-changeDirection', - title: translate('Change direction'), - action: { - - // event needs to be adressed - click: function(event, element) { - changeDirection(element); - } - } - } - }); - } - - function addChangeActorTypeMenu(actions) { - assign(actions, { - 'replace': { - group: 'edit', - className: 'bpmn-icon-screw-wrench', - title: translate('Change type'), - action: { - click: function(event, element) { - let position = assign(getReplaceMenuPosition(element), { - cursor: { x: event.x, y: event.y } - }); - popupMenu.open(element, 'ds-replace', position); - } - } - } - }); - } - - function addColorChange(actions) { - assign(actions, { - 'colorChange': { - group:'edit', - className:'icon-domain-story-color-picker', - title: translate('Change color'), - action: { - click: function(event, element) { - selectedID = element.id; - picker.show(); - - } - } - } - }); - } - - function addTextAnnotation(actions) { - assign(actions, { - 'append.text-annotation': appendAction(TEXTANNOTATION, 'bpmn-icon-text-annotation', 'textannotation', 'connect') - }); - } - - function addConnectWithActivity(actions, startConnect) { - assign(actions, { - 'connect': { - group: 'connect', - className: 'bpmn-icon-connection', - title: translate('Connect with activity'), - action: { - click: startConnect, - dragstart: startConnect - } - } - }); - } - - function addWorkObjects(appendAction, actions) { - let workObjectTypes = getTypeDictionary(WORKOBJECT); - workObjectTypes.keysArray().forEach(workObjectType => { - let name = getNameFromType(workObjectType); - let icon = getIconForType(workObjectType); - let action = []; - action['append.workObject' + name] = appendAction(workObjectType, icon, name, 'workObjects'); - assign(actions, action); - }); - } - - function addActors(appendAction, actions) { - let actorTypes = getTypeDictionary(ACTOR); - actorTypes.keysArray().forEach(actorType => { - let name = getNameFromType(actorType); - let icon = getIconForType(actorType); - let action = []; - action['append.actor' + name] = appendAction(actorType, icon, name, 'actors'); - assign(actions, action); - }); - } - - function addChangeWorkObjectTypeMenu(actions) { - assign(actions, { - 'replace': { - group: 'edit', - className: 'bpmn-icon-screw-wrench', - title: translate('Change type'), - action: { - click: function(event, element) { - let position = assign(getReplaceMenuPosition(element), { - cursor: { x: event.x, y: event.y } - }); - popupMenu.open(element, 'ds-replace', position); - } - } - } - }); - } - - function changeDirection(element) { - let context; - let businessObject = element.businessObject; - let newNumber; - - if (element.source.type.includes(ACTOR)) { - newNumber = 0; - } - else { - newNumber = generateAutomaticNumber(element, commandStack); - } - context = { - businessObject: businessObject, - newNumber: newNumber, - element: element - }; - commandStack.execute('activity.directionChange', context); - } - - function getReplaceMenuPosition(element) { - - let Y_OFFSET = 5; - - let diagramContainer = canvas.getContainer(), - pad = contextPad.getPad(element).html; - - let diagramRect = diagramContainer.getBoundingClientRect(), - padRect = pad.getBoundingClientRect(); - - let top = padRect.top - diagramRect.top; - let left = padRect.left - diagramRect.left; - - let pos = { - x: left, - y: top + padRect.height + Y_OFFSET - }; - - return pos; - } - - /** - * create an append action - * - * @param {String} type - * @param {String} className - * @param {String} [title] - * @param {Object} [options] - * - * @return {Object} descriptor - */ - function appendAction(type, className, title, group, options) { - - if (typeof title !== 'string') { - options = title; - title = translate('{type}', { type: type.replace(/^domainStory:/, '') }); - } - - function appendStart(event, element) { - - let shape = elementFactory.createShape(assign({ type: type }, options)); - let context = { - elements: [shape], - hints: {}, - source:element - }; - create.start(event, shape, context); - } - - autoPlace ? function(element) { - let shape = elementFactory.createShape(assign({ type: type }, options)); - - autoPlace.append(element, shape); - } : appendStart; - - return { - group: group, - className: className, - title: 'Append ' + title, - action: { - dragstart: startConnect, - click: appendStart - } - }; - } -} - -inherits(DomainStoryContextPadProvider, ContextPadProvider); - -DomainStoryContextPadProvider.$inject = [ - 'injector', - 'connect', - 'translate', - 'elementFactory', - 'create', - 'canvas', - 'contextPad', - 'popupMenu', - 'replaceMenuProvider', - 'commandStack', - 'eventBus', - 'modeling' -]; diff --git a/app/domain-story-modeler/features/context-pad/index.js b/app/domain-story-modeler/features/context-pad/index.js deleted file mode 100644 index 704709ec..00000000 --- a/app/domain-story-modeler/features/context-pad/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import ElementFactory from 'diagram-js/lib/core/ElementFactory'; -import CommandStack from 'diagram-js/lib/command/CommandStack'; -import DSModeling from '../modeling/DSModeling'; - -'use strict'; - -export default { - __depends__:[ - ], - __init__: [ - 'domainStoryRenderer', - 'paletteProvider', - 'domainStoryRules', - 'domainStoryUpdater', - 'contextPadProvider', - 'replaceMenuProvider', - ], - elementFactoryBpmn: ['type', ElementFactory], - commandStack: ['type', CommandStack], - modeling : ['type', DSModeling] -}; \ No newline at end of file diff --git a/app/domain-story-modeler/features/dictionary/dictionary.js b/app/domain-story-modeler/features/dictionary/dictionary.js deleted file mode 100644 index 910d86b1..00000000 --- a/app/domain-story-modeler/features/dictionary/dictionary.js +++ /dev/null @@ -1,172 +0,0 @@ - -import { ACTIVITY, WORKOBJECT } from '../../language/elementTypes'; -import { getAllCanvasObjects } from '../../language/canvasElementRegistry'; - - -let activityDictionary = []; -let workObjectDictionary = []; - -export function getActivityDictionary() { - return activityDictionary.slice(); -} - -export function getWorkObjectDictionary() { - return workObjectDictionary.slice(); -} - -export function cleanDictionaries() { - cleanActicityDictionary(); - cleanWorkObjecDictionary(); - - let dictionaryButton = document.getElementById('dictionaryButton'); - - if (activityDictionary.length > 0 || workObjectDictionary.length > 0) { - dictionaryButton.style.opacity = 1; - dictionaryButton.style.pointerEvents = 'all'; - - dictionaryButton.onmouseover = function() { - dictionaryButton.style.border = '1px solid #CCC'; - }; - dictionaryButton.onmouseout = function() { - dictionaryButton.style.border = ''; - }; - } else { - dictionaryButton.style.opacity = 0.2; - dictionaryButton.style.pointerEvents = 'none'; - - dictionaryButton.onmouseover = function() { }; - dictionaryButton.onmouseout = function() { }; - } -} - -export function openDictionary() { - cleanDictionaries(); - - let element, i = 0; - let activityDictionary = getActivityDictionary(), - workobjectDictionary = getWorkObjectDictionary(); - let activityDictionaryContainer = document.getElementById('activityDictionaryContainer'), - workobjectDictionaryContainer = document.getElementById('workobjectDictionaryContainer'), - modal = document.getElementById('modal'), - dictionaryDialog = document.getElementById('dictionaryDialog'); - - activityDictionaryContainer.innerHTML = ''; - workobjectDictionaryContainer.innerHTML = ''; - - for (i; i < activityDictionary.length; i++) { - addElement(element, activityDictionaryContainer, activityDictionary, i); - } - - for (i = 0; i < workobjectDictionary.length; i++) { - addElement(element, workobjectDictionaryContainer, workobjectDictionary, i); - } - - modal.style.display = 'block'; - dictionaryDialog.style.display = 'block'; -} - -export function dictionaryClosed(commandStack, activityDictionaryContainer, workobjectDictionaryContainer) { - let oldActivityDictionary = getActivityDictionary(); - let oldWorkobjectDictionary = getWorkObjectDictionary(); - let activityNewNames = []; - let workObjectNewNames = []; - - activityDictionaryContainer.childNodes.forEach(child=>{ - if (child.value) { - activityNewNames[child.id] = child.value; - } - }); - - workobjectDictionaryContainer.childNodes.forEach(child=>{ - if (child.value) { - workObjectNewNames[child.id] = child.value; - } - }); - - if (activityNewNames.length === oldActivityDictionary.length && workObjectNewNames.length === oldWorkobjectDictionary.length) { - dictionaryDifferences(activityNewNames, oldActivityDictionary, workObjectNewNames, oldWorkobjectDictionary, commandStack); - } -} - -function addElement(element, dictionaryContainer, dictionary, i) { - element = document.createElement('INPUT'); - element.setAttribute('type', 'text'); - element.setAttribute('id', i); - element.setAttribute('style', 'width:100%; margin-bottom: 2px'); - element.value = dictionary[i]; - dictionaryContainer.appendChild(element); - element = document.createElement('br'); - dictionaryContainer.appendChild(element); -} - -// rework the activity-dictionary with the changed labels on the canvas -function cleanActicityDictionary() { - activityDictionary = []; - let allObjects = getAllCanvasObjects(); - allObjects.forEach(element => { - let name = element.businessObject.name; - if (name && name.length > 0 && element.type.includes(ACTIVITY) && !activityDictionary.includes(name)) { - activityDictionary.push(name); - } - }); - activityDictionary.sort(function(a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); -} - -// rework the label-dictionary with the changed labels on the canvas -function cleanWorkObjecDictionary() { - workObjectDictionary = []; - - let allObjects = getAllCanvasObjects(); - - allObjects.forEach(element => { - let name = element.businessObject.name; - if (name && name.length > 0 && element.type.includes(WORKOBJECT) && !workObjectDictionary.includes(name)) { - workObjectDictionary.push(name); - } - }); - workObjectDictionary.sort(function(a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); -} - -function dictionaryDifferences(activityNames, oldActivityDictionary, workObjectNames, oldWorkobjectDictionary, commandStack) { - let i=0; - for (i=0;i{ - if (element.type.includes(type) && element.businessObject.name == oldValue) { - allRelevantObjects.push(element); - } - }); - - let context = { - elements: allRelevantObjects, - newValue: newValue - }; - - commandStack.execute('domainStoryObjects.massRename', context); -} diff --git a/app/domain-story-modeler/features/export/createTitleAndInfo.js b/app/domain-story-modeler/features/export/createTitleAndInfo.js deleted file mode 100644 index ad2b7367..00000000 --- a/app/domain-story-modeler/features/export/createTitleAndInfo.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -let extraHeight = 0; -const titleHeight = 30, descriptionHeight = 15; -const xOffset = 8; -const NS='http://www.w3.org/2000/svg'; - -export function createTitleAndDescriptionSVGElement(titleText, descriptionText, xLeft, yUp, width) { - - titleText = titleText.replace('<','').replace('>',''); - - let insertText = ''; - let title = createTitle(titleText, width); - let description = createDescription(descriptionText, width); - - // to display the title and description in the SVG-file, we need to add a container for our text-elements - insertText ='' - + title + description + ''; - return { insertText, extraHeight }; -} - -function createTitle(text, width) { - let tempCanvas = document.createElement('canvas'); - let ctx = tempCanvas.getContext('2d'); - ctx.font = '30px Arial'; - - return createTextSpans(text, width, ctx, 10, titleHeight, 30); -} - -function createDescription(text, width) { - let description =''; - let descriptionParts = text.split('
'); - - let tempCanvas = document.createElement('canvas'); - let ctx = tempCanvas.getContext('2d'); - ctx.font= '12px Arial'; - - for (let i=0; i < descriptionParts.length;i++) { - description+= createTextSpans(descriptionParts[i], width, ctx, 0, descriptionHeight, 12); - } - return description; -} - -function createTextSpans(text, width, ctx, yOffest, heightOffset, fontSize) { - let textSpans=''; - let words = text.split(' '); - - let textTag = ''; - - let textSpan = document.createElementNS(NS, 'tspan'); - let textNode = document.createTextNode(words[0]); - - textSpan.setAttribute('x', xOffset); - textSpan.setAttribute('y', (yOffest + extraHeight)); - textSpan.setAttribute('font-size', fontSize); - textSpan.appendChild(textNode); - - for (let j =1; j (width - 16)) { - extraHeight += heightOffset; - textSpan.firstChild.data = textSpan.firstChild.data.slice(0, len); // remove overflow word - - textSpans += textTag + textSpan.outerHTML + ''; // append line - - // create new textspan for line break - textSpan = document.createElementNS(NS, 'tspan'); - textNode = document.createTextNode(words[j]); - textSpan.setAttribute('x', xOffset); - textSpan.setAttribute('y', (yOffest + extraHeight)); - textSpan.appendChild(textNode); - } - } - extraHeight += heightOffset; - - textSpans += textTag + textSpan.outerHTML + ''; - return textSpans; -} \ No newline at end of file diff --git a/app/domain-story-modeler/features/export/dirtyFlag.js b/app/domain-story-modeler/features/export/dirtyFlag.js deleted file mode 100644 index 17941b0c..00000000 --- a/app/domain-story-modeler/features/export/dirtyFlag.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -let exportButtonIMG = document.getElementById('exportButtonIMG'); -let exportButtonIMGDirty = document.getElementById('exportButtonIMGDirty'); -let dirty = false; - - -export function makeDirty() { - if (exportButtonIMG) { - exportButtonIMGDirty.style = 'display:inherit'; - exportButtonIMG.style = 'display:none'; - } - dirty = true; -} - -export function removeDirtyFlag() { - if (exportButtonIMG) { - exportButtonIMG.style = 'diplay:inherit'; - exportButtonIMGDirty.style = 'display:none'; - } - dirty = false; -} - -export function isDirty() { - return dirty; -} \ No newline at end of file diff --git a/app/domain-story-modeler/features/export/dstDownload.js b/app/domain-story-modeler/features/export/dstDownload.js deleted file mode 100644 index b0345f5d..00000000 --- a/app/domain-story-modeler/features/export/dstDownload.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict'; - -import { ACTIVITY, TEXTANNOTATION, ACTOR, WORKOBJECT } from '../../language/elementTypes'; -import { getAllCanvasObjects, getAllGroups } from '../../language/canvasElementRegistry'; -import { createConfigFromDictionaries } from '../iconSetCustomization/persitence'; -import { removeDirtyFlag } from './dirtyFlag'; -import { getTypeDictionary } from '../../language/icon/dictionaries'; -import { sanitizeForDesktop } from '../../util/Sanitizer'; -import { getIconset } from '../../language/icon/iconConfig'; - -let infoText = document.getElementById('infoText'); - -export function downloadDST(filename, text) { - - let configAndDST = createConfigAndDst(text); - let json =JSON.stringify(configAndDST); - let element = document.createElement('a'); - - filename = sanitizeForDesktop(filename); - element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(json)); - element.setAttribute('download', filename + '.dst'); - - element.style.display = 'none'; - document.body.appendChild(element); - - element.click(); - - removeDirtyFlag(); - - document.body.removeChild(element); -} - -export function createObjectListForDSTDownload(version) { - let allObjectsFromCanvas = getAllCanvasObjects(); - let groups = getAllGroups(); - let text = ''; - - let objectList = []; - - allObjectsFromCanvas.forEach(canvasElement =>{ - if (canvasElement.type == ACTIVITY) { - objectList.push(canvasElement.businessObject); - } - - // ensure that Activities are always after Actors, Workobjects and Groups in .dst files - else { - if (canvasElement.type == TEXTANNOTATION) { - canvasElement.businessObject.width = canvasElement.width; - canvasElement.businessObject.height = canvasElement.height; - } - objectList.unshift(canvasElement.businessObject); - } - }); - - groups.forEach(group => { - objectList.push(group.businessObject); - }); - - if (infoText) { - text = infoText.innerText ; - } - - objectList.push({ info: text }); - objectList.push({ version: version }); - return objectList; -} - -export function createConfigAndDst(text) { - - const iconConfig = getIconset(); - let configJSONString = {}; - let actors = iconConfig.actors; - let workObjects = iconConfig.workObjects; - - if (!actors.size>0) { - actors = getTypeDictionary(ACTOR); - } - if (!workObjects.size>0) { - workObjects = getTypeDictionary(WORKOBJECT); - } - - configJSONString = JSON.stringify(createConfigFromDictionaries(actors, null, workObjects, null, document.getElementById('currentDomainName').innerText)); - - return { - domain: configJSONString, - dst: text - }; -} diff --git a/app/domain-story-modeler/features/export/pngDownload.js b/app/domain-story-modeler/features/export/pngDownload.js deleted file mode 100644 index c401d5dc..00000000 --- a/app/domain-story-modeler/features/export/pngDownload.js +++ /dev/null @@ -1,345 +0,0 @@ -'use strict'; - -import { createTitleAndDescriptionSVGElement } from './createTitleAndInfo'; -import { sanitizeForDesktop } from '../../util/Sanitizer'; - -let width, height; -let title = document.getElementById('title'), - infoText = document.getElementById('infoText'); - -export function downloadPNG() { - let canvas = document.getElementById('canvas'); - let container = canvas.getElementsByClassName('djs-container'); - let svgElements = container[0].getElementsByTagName('svg'); - let outerSVGElement = svgElements[0]; - let viewport = outerSVGElement.getElementsByClassName('viewport')[0]; - let layerBase = viewport.getElementsByClassName('layer-base')[0]; - - let image = document.createElement('img'); - - let onLoadTriggered = false; - - // removes unwanted black dots in image - let svg = extractSVG(viewport); - - svg = prepareSVG(svg, layerBase); - - image.onload = function() { - onLoadTriggered = true; - let tempCanvas = document.createElement('canvas'); - - // add a 10px buffer to the right and lower boundary - tempCanvas.width = width + 10; - tempCanvas.height = height + 10; - - let ctx = tempCanvas.getContext('2d'); - - // fill with white background - ctx.rect(0, 0, tempCanvas.width, tempCanvas.height); - ctx.fillStyle = 'white'; - ctx.fill(); - - ctx.drawImage(image, 0, 0); - - let png64 = tempCanvas.toDataURL('image/png'); - let ele = document.createElement('a'); - ele.setAttribute( - 'download', - sanitizeForDesktop(title.innerText) + - '_' + - new Date().toISOString().slice(0, 10) + - '.png' - ); - ele.setAttribute('href', png64); - document.body.appendChild(ele); - ele.click(); - document.body.removeChild(ele); - - // image source has to be removed to circumvent browser caching - image.src =''; - }; - image.onchange = image.onload; - - image.width = width; - image.height = height; - - image.src = 'data:image/svg+xml,' + svg; - - if (image.complete && !onLoadTriggered) { - onLoadTriggered = true; - let tempCanvas = document.createElement('canvas'); - - // add a 10px buffer to the right and lower boundary - tempCanvas.width = width + 10; - tempCanvas.height = height + 10; - - let ctx = tempCanvas.getContext('2d'); - ctx.drawImage(image, 0, 0); - - let png64 = tempCanvas.toDataURL('image/png'); - let ele = document.createElement('a'); - ele.setAttribute( - 'download', - sanitizeForDesktop(title.innerText) + - '_' + - new Date().toISOString().slice(0, 10) + - '.png' - ); - ele.setAttribute('href', png64); - document.body.appendChild(ele); - ele.click(); - document.body.removeChild(ele); - - // image source has to be removed to circumvent browser caching - image.src =''; - } - - - function extractSVG(viewport) { - let layerResizers = viewport.getElementsByClassName('layer-resizers'); - let layerOverlays = viewport.getElementsByClassName('layer-overlays'); - let transform = viewport.getAttribute('transform'); - let translate = viewport.getAttribute('translate'); - - const layerRes = layerResizers[0]; - const layerOver= layerOverlays[0]; - - const layerResizersParent = layerResizers[0].parentNode; - const layerOverlaysParent = layerOverlays[0].parentNode; - - if (layerResizers[0]) { - layerResizers[0].parentNode.removeChild(layerResizers[0]); - } - if (layerOverlays[0]) { - layerOverlays[0].parentNode.removeChild(layerOverlays[0]); - } - - // remove canvas scrolling and scaling before serializeToString of SVG - if (transform) { - viewport.removeAttribute('transform'); - } - if (translate) { - viewport.removeAttribute('translate'); - } - - let svg = new XMLSerializer().serializeToString(outerSVGElement); - - // re-add canvas scrolling and scaling - if (transform) { - viewport.setAttribute('transform', transform); - } - if (translate) { - viewport.setAttribute('translate', translate); - } - - layerResizersParent.appendChild(layerRes); - layerOverlaysParent.appendChild(layerOver); - - return svg; - } -} - -export function calculateWidthAndHeight(xLeft, xRight, yUp, yDown) { - if (xLeft < 0) { - if (xRight < 0) { - width = Math.abs(xLeft - xRight); - } else { - width = Math.abs(xLeft) + xRight; - } - } else { - width = xRight - xLeft; - } - - if (yUp < 0) { - if (yDown < 0) { - height = Math.abs(yUp - yDown); - } else { - height = Math.abs(yUp) + yDown; - } - } else { - height = yDown - yUp; - } - - // if the domain-Story is smaller than 300px in width or height, increase its dimensions - if (height < 300) { - height += 300; - yUp -= 150; - yDown += 150; - } - if (width < 300) { - width += 300; - xLeft -= 150; - xRight += 150; - } - return [height, width]; -} - -function prepareSVG(svg, layertBase) { - let { xLeft, xRight, yUp, yDown } = findMostOuterElements(layertBase); - let descriptionText = infoText.innerHTML; - let titleText = title.innerHTML; - let viewBoxIndex = svg.indexOf('width="'); - - calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - let { insertText, extraHeight } = createTitleAndDescriptionSVGElement( - titleText, - descriptionText, - xLeft, - yUp + 20, - width - ); - height += extraHeight; - - let bounds = - 'width="' + - width + - '" height="' + - height + - '" viewBox=" ' + - xLeft + - ' ' + - (yUp - extraHeight) + - ' ' + - width + - ' ' + - height + - '" '; - - let dataStart = svg.substring(0, viewBoxIndex); - viewBoxIndex = svg.indexOf('style="'); - let dataEnd = svg.substring(viewBoxIndex); - dataEnd.substring(viewBoxIndex); - - svg = dataStart + bounds + dataEnd; - - let insertIndex = svg.indexOf('') + 20; - - svg = [svg.slice(0, insertIndex), insertText, svg.slice(insertIndex)].join( - '' - ); - svg = URIHashtagFix(svg); - - return svg; -} - -// fixes # symbols in data URIs not being escaped -function URIHashtagFix(svg) { - let fix = false; - - navigator.browserSpecs = (function() { - let ua = navigator.userAgent, - tem, - M = - ua.match( - /(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i - ) || []; - if (/trident/i.test(M[1])) { - tem = /\brv[ :]+(\d+)/g.exec(ua) || []; - return { name: 'IE', version: tem[1] || '' }; - } - if (M[1] === 'Chrome') { - tem = ua.match(/\b(OPR|Edge)\/(\d+)/); - if (tem != null) - return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; - } - M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; - if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]); - return { name: M[0], version: M[1] }; - })(); - - let browser = navigator.browserSpecs; - - let name = browser.name; - let version = browser.version; - - // only implemented in chrome and firefox at the moment - if (name.includes('Chrome')) { - if (version >= 72) { - fix = true; - - // https://www.chromestatus.com/features/5656049583390720 - } - } else if (name.includes('Firefox')) { - fix = true; - - // versionNumber of implementation unknown - } - if (fix) { - while (svg.includes('#')) { - svg = svg.replace('#', '%23'); - } - } - return svg; -} - -function findMostOuterElements(svg) { - let xLeft = 0; - let xRight = 0; - let yUp = 0; - let yDown = 0; - - let elements = svg.getElementsByClassName('djs-group'); - - for (let i = 0; i < elements.length; i++) { - let element = elements[i]; - let sub = element.children; - - let elXLeft, elXRight, elYUp, elYDown; - - let transform = sub[0].getAttribute('transform'); - if (transform) { - let nums; - - if (transform.includes('matrix')) { - transform.replace('matrix(', ''); - transform.replace(')'); - nums = transform.split(' '); - elXLeft = parseInt(nums[4]); - elYUp = parseInt(nums[5]); - } else { - transform.replace('translate('); - transform.replace(')'); - nums = transform.split(' '); - elXLeft = parseInt(nums[0]); - elYUp = parseInt(nums[1]); - } - - let rects = sub[0].getElementsByTagName('rect'); - let outerRect = rects[rects.length - 1]; - - elXRight = elXLeft + parseInt(outerRect.getAttribute('width')); - elYDown = elYUp + parseInt(sub[0].getBoundingClientRect().height); - } else { - let rects = element.getElementsByTagName('rect'); - let outerRect = rects[rects.length - 1]; - - elXLeft = parseInt(outerRect.getAttribute('x')); - elYUp = parseInt(outerRect.getAttribute('y')); - - elXRight = elXLeft + parseInt(outerRect.getAttribute('width')); - elYDown = elYUp + parseInt(outerRect.getAttribute('height')) + 20; // Add 20 px as Padding for text at the bottom - } - if (elXLeft < xLeft) { - xLeft = elXLeft; - } - if (elXRight > xRight) { - xRight = elXRight; - } - if (elYUp < yUp) { - yUp = elYUp; - } - if (elYDown > yDown) { - yDown = elYDown; - } - } - - yUp -= 75; // we need to adjust yUp to have space for the title and description - - return { - xLeft: xLeft, - xRight: xRight, - yUp: yUp, - yDown: yDown - }; -} diff --git a/app/domain-story-modeler/features/export/storyDownload.js b/app/domain-story-modeler/features/export/storyDownload.js deleted file mode 100644 index d03e1e7b..00000000 --- a/app/domain-story-modeler/features/export/storyDownload.js +++ /dev/null @@ -1,284 +0,0 @@ -'use strict'; - -import { sanitizeForDesktop } from '../../util/Sanitizer'; -import { GROUP } from '../../language/elementTypes'; -import { - getActivitesFromActors, - wasInitialized, -} from '../../language/canvasElementRegistry'; -import { traceActivities } from '../replay/initializeReplay'; -import doT from 'dot'; -import { editMode, presentationMode, showCurrentStep } from '../replay/replayFunctions'; - -let canvas; -let selection; - -let multiplexSecret; -let multiplexId; - -let replayOn = false; -let currentStep = 0; -let replaySteps = []; -let initialViewbox; - -let errorStep = 0; - -let dsModeler; - -let modal = document.getElementById('modal'); -let incompleteStoryDialog = document.getElementById('incompleteStoryInfo'); - -export function initStoryDownload(inCanvas, inSelection, modeler) { - canvas = inCanvas; - selection = inSelection; - dsModeler = modeler; - - // cors.bridged.cc is a CORS ANYWHERE server. For details: https://blog.bridged.xyz/cors-anywhere-for-everyone-free-reliable-cors-proxy-service-73507192714e - fetch('https://cors.bridged.cc/https://reveal-multiplex.glitch.me/token', { headers: { 'x-requested-with':'XMLHttpRequest' } }).then(res => res.json()).then((out) => { - multiplexSecret=out.secret; - multiplexId=out.socketId; - }).catch(err => console.error(err)); -} - -export async function downloadStory(filename) { - var svgData = []; - currentStep = 0; - - // export all sentences of domain story - startReplay(); - try { - const result = await dsModeler.saveSVG({ }); - fixSvgDefinitions(result, currentStep); - - svgData.push({ content: createSVGData(result.svg), transition: 'slide' }); - } catch (err) { - alert('There was an error exporting the SVG.\n' + err); - } - while (currentStep < replaySteps.length - 1) { - nextStep(); - try { - const result = await dsModeler.saveSVG({ }); - fixSvgDefinitions(result, currentStep); - svgData.push({ content: createSVGData(result.svg), transition: 'slide' }); - } catch (err) { - alert('There was an error exporting the SVG.\n' + err); - } - } - stopReplay(); - - // create download for presentation - let revealjsTemplate = document.getElementById('revealjs-template'); - var dots = doT.template(revealjsTemplate.innerHTML); - var revealjsData = { }; - revealjsData.script = 'script'; // don't change this!! - revealjsData.title = document.getElementById('title').innerHTML; - revealjsData.description = document.getElementById('infoText').innerHTML; - revealjsData.sentences = svgData; - revealjsData.multiplexSecret = multiplexSecret; - revealjsData.multiplexId = multiplexId; - let element; - element = document.createElement('a'); - element.setAttribute( - 'href', - 'data:text/html;charset=UTF-8,' + dots(revealjsData) - ); - element.setAttribute('download', sanitizeForDesktop(filename) + '.html'); - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); -} - -function startReplay() { - if (wasInitialized()) { - initialViewbox = canvas.viewbox(); - let activities = getActivitesFromActors(); - - if (!replayOn && activities.length > 0) { - replaySteps = traceActivities(activities); - - if (isStoryConsecutivelyNumbered(replaySteps)) { - replayOn = true; - presentationMode(selection); - currentStep = 0; - showCurrentStep(currentStep, replaySteps, canvas); - } else { - let errorText = '\nThe numbers: '; - for (let i = 0; i < replaySteps.length; i++) { - if (errorStep[i]) { - errorText += i + 1 + ','; - } - } - errorText = errorText.substring(0, errorText.length - 1); - errorText += ' are missing!'; - - let oldText = incompleteStoryDialog.getElementsByTagName('text'); - if (oldText) { - for (let i = 0; i < oldText.length; i++) { - incompleteStoryDialog.removeChild(oldText[i]); - } - } - - let text = document.createElement('text'); - text.innerHTML = - ' The activities in this Domain Story are not numbered consecutively.
' + - 'Please fix the numbering in order to replay the story.
' + - errorText; - incompleteStoryDialog.appendChild(text); - incompleteStoryDialog.style.display = 'block'; - modal.style.display = 'block'; - } - } - } -} - -function stopReplay() { - if (replayOn) { - editMode(); - - // show all canvas elements - let allObjects = []; - let groupObjects = []; - let canvasObjects = canvas._rootElement.children; - let i = 0; - - for (i = 0; i < canvasObjects.length; i++) { - if (canvasObjects[i].type.includes(GROUP)) { - groupObjects.push(canvasObjects[i]); - } else { - allObjects.push(canvasObjects[i]); - } - } - - i = groupObjects.length - 1; - while (groupObjects.length >= 1) { - let currentgroup = groupObjects.pop(); - currentgroup.children.forEach(child => { - if (child.type.includes(GROUP)) { - groupObjects.push(child); - } else { - allObjects.push(child); - } - allObjects.push(currentgroup); - }); - i = groupObjects.length - 1; - } - allObjects.forEach(element => { - let domObject = document.querySelector( - '[data-element-id=' + element.id + ']' - ); - domObject.style.display = 'block'; - }); - - replayOn = false; - currentStep = 0; - canvas.viewbox(initialViewbox); - } -} - -function nextStep() { - if (replayOn) { - if (currentStep < replaySteps.length - 1) { - currentStep += 1; - showCurrentStep(currentStep, replaySteps, canvas); - } - } -} - -function isStoryConsecutivelyNumbered(replaySteps) { - errorStep = []; - let complete = true; - for (let i = 0; i < replaySteps.length; i++) { - if (!replaySteps[i].activities[0]) { - complete = false; - errorStep[i] = true; - } else { - errorStep[i] = false; - } - } - return complete; -} - -/* ---------------------------- -SVG handling starts here ----------------------------- -*/ - -function createSVGData(svg) { - - let data = JSON.parse(JSON.stringify(svg)); - - // to ensure that the title and description are inside the SVG container and do not overlapp with any elements, - // we change the confines of the SVG viewbox - let viewBoxIndex = data.indexOf('width="'); - - let viewBox = viewBoxCoordinates(data); - - let xLeft, width, yUp, height; - let bounds = ''; - let splitViewBox = viewBox.split(/\s/); - - xLeft = +splitViewBox[0]; - yUp = +splitViewBox[1]; - width = +splitViewBox[2]; - height = +splitViewBox[3]; - - if (width < 300) { - width += 300; - } - - bounds = - 'width="100%"' + - ' height="auto" ' + - ' preserveAspectRatio="xMidYMid meet"' + - ' viewBox="' + - xLeft + - ' ' + - yUp + - ' ' + - (xLeft + width) + - ' ' + - (yUp + height); - let dataStart = data.substring(0, viewBoxIndex); - viewBoxIndex = data.indexOf('" version'); - let dataEnd = data.substring(viewBoxIndex); - dataEnd.substring(viewBoxIndex); - - data = dataStart + bounds + dataEnd; - - let insertIndex = data.indexOf(''); - if (insertIndex < 0) { - insertIndex = data.indexOf('version="1.2">') + 14; - } else { - insertIndex += 7; - } - - return encodeURIComponent(data); -} - -function viewBoxCoordinates(svg) { - const ViewBoxCoordinate = /width="([^"]+)"\s+height="([^"]+)"\s+viewBox="([^"]+)"/; - const match = svg.match(ViewBoxCoordinate); - return match[3]; -} - - -function fixSvgDefinitions(result, sectionIndex) { - let defs = result.svg.substring(result.svg.indexOf(''), result.svg.indexOf('') + 7); - const split = defs.split(' { - let idToReplace = id.substring(4, id.length-1); - let newId = idToReplace.slice(0, id.length-5) + 'customId' + sectionIndex + idToReplace.slice(idToReplace.length-2); - result.svg = result.svg.replaceAll(idToReplace, newId); - }); - newDefs += (''); - if (insertIndex < 0) { - insertIndex = data.indexOf('version="1.2">') + 14; - } else { - insertIndex += 7; - } - - data = [ - data.slice(0, insertIndex), - insertText, - data.slice(insertIndex) - ].join(''); - - data = appendDST(data); - - return encodeURIComponent(data); -} - -function viewBoxCoordinates(svg) { - const ViewBoxCoordinate = /width="([^"]+)"\s+height="([^"]+)"\s+viewBox="([^"]+)"/; - const match = svg.match(ViewBoxCoordinate); - return { width: +match[1], height: +match[2], viewBox: match[3] }; -} - -function appendDST(data) { - const objects = createObjectListForDSTDownload(version); - - const dstText = JSON.stringify(objects); - const dst = createConfigAndDst(dstText); - data+= '\n'; - return data; -} diff --git a/app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js b/app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js deleted file mode 100644 index 8ab44c63..00000000 --- a/app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -import { appendedIcons } from '../../language/icon/all_Icons'; -import { createListElement } from './customizationDialog'; -import { domExists } from '../../language/testmode'; - -export function addIMGToIconDictionary(input, name) { - appendedIcons.set(name, input); - - if (domExists()) { - const htmlList = document.getElementById('allIconsList'); - const listElement = createListElement(name); - htmlList.appendChild(listElement); - } -} diff --git a/app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js b/app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js deleted file mode 100644 index b991cbb2..00000000 --- a/app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js +++ /dev/null @@ -1,524 +0,0 @@ -'use strict'; - -import { - initializeAllIcons, - getAllIconDictioary, - deleteFromSelectedWorkObjectDictionary, - deleteFromSelectedActorDictionary, - getIconSource, - addToSelectedActors, - addToSelectedWorkObjects, - selectedDitionariesAreNotEmpty, - getAppendedIconDictionary, - emptySelectedActorsDictionary, - emptySelectedWorkObjectsDictionary, - getSelectedActorsDictionary, - getSelectedWorkObjectsDictionary -} from './dictionaries'; -import { ACTOR, WORKOBJECT } from '../../language/elementTypes'; -import { domExists } from '../../language/testmode'; -import { isInTypeDictionary } from '../../language/icon/dictionaries'; -import { customConfigTag } from './persitence'; -import { default_conf } from '../../language/icon/iconConfig'; -import { setListElementStyle, setRadioElementStyle, setVerticalLineElementStyle, setImageElementStyle, iconSize } from './styling'; - -let htmlList = document.getElementById('allIconsList'); -let selectedActorsList = document.getElementById('selectedActorsList'); -let selectedWorkObjectList = document.getElementById('selectedWorkObjectsList'); - -const Sortable = require('sortablejs'); -const highlightBackgroundColor = '#f6f6f6'; - -let actorListArray = []; -let workObjectListArray = []; -let alreadyAddedNames = []; - -// options for drag&drop lists -const mainListOptions = { - group: 'allIconList', - sort: 'true', - onEnd: function() { - updateBackgroundColors(); - } -}; - -const actorListOptions = { - group: { - name: 'actorIconList', - put: ['actorIconList', 'workObjectIconList'] - }, - sort: 'false', - onEnd: function(event) { - dropElement(event); - } -}; - -const workObjectListOptions = { - group: { - name: 'workObjectIconList', - put: ['actorIconList', 'workObjectIconList'] - }, - sort: 'false', - onEnd: function(event) { - dropElement(event); - } -}; - -export function createListElement(name, greyBackground) { - let iconSRC = getIconSource(name); - - let listElement = document.createElement('li'); - let radioElement = document.createElement('div'); - let verticalLineElement = document.createElement('div'); - let imageElement = document.createElement('img'); - let nameElement = document.createElement('text'); - - let inputRadioNone = document.createElement('input'); - let inputRadioActor = document.createElement('input'); - let inputRadioWorkObject = document.createElement('input'); - - nameElement.innerHTML = name; - - setStyles(listElement, radioElement, verticalLineElement, imageElement, greyBackground); - - setRadioButtonAttributes(inputRadioNone, name, 'none'); - setRadioButtonAttributes(inputRadioActor, name, 'actor'); - setRadioButtonAttributes(inputRadioWorkObject, name, 'workObject'); - - - if (iconSRC.startsWith('data')) { - imageElement.src = iconSRC; - } else { - imageElement.src = 'data:image/svg+xml,' + iconSRC; - } - - if (isInTypeDictionary(ACTOR, ACTOR + name)) { - inputRadioActor.checked = true; - } else if (isInTypeDictionary(WORKOBJECT, WORKOBJECT + name)) { - inputRadioWorkObject.checked = true; - } else { - inputRadioNone.checked = true; - } - - fillRadioElement(radioElement, inputRadioNone, inputRadioActor, inputRadioWorkObject); - - listElement.appendChild(radioElement); - listElement.appendChild(verticalLineElement); - listElement.appendChild(imageElement); - listElement.appendChild(nameElement); - - return listElement; -} - -export function resetHTMLSelectionList() { - if (domExists()) { - let i = 0; - for (i = selectedWorkObjectList.children.length - 1; i >= 0; i--) { - const child = selectedWorkObjectList.children[i]; - selectedWorkObjectList.removeChild(child); - } - - for (i = selectedActorsList.children.length - 1; i >= 0; i--) { - const child = selectedActorsList.children[i]; - selectedActorsList.removeChild(child); - } - } -} - -export function createListElementInSeletionList(name, src, list) { - const children = list.children; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - const listElementName = child.children[1].innerText; - if (name == listElementName) { - return; - } - } - - if (domExists()) { - const listElement = document.createElement('li'); - const nameElement = document.createElement('text'); - const imageElement = document.createElement('img'); - - imageElement.width = iconSize; - imageElement.heigth = iconSize; - if (src.startsWith('data')) { - imageElement.src = src; - } else { - imageElement.src = 'data:image/svg+xml,' + src; - } - - nameElement.innerHTML = name; - nameElement.style.marginLeft = '5px'; - - listElement.appendChild(imageElement); - listElement.appendChild(nameElement); - - return listElement; - } - return null; -} - -export function createListOfAllIcons() { - resetHTMLSelectionList(); - initializeAllIcons(); - clearAllElementList(); - actorListArray = []; - workObjectListArray = []; - - new Sortable(htmlList, mainListOptions); - new Sortable(selectedActorsList, actorListOptions); - new Sortable(selectedWorkObjectList, workObjectListOptions); - - let allIconDictionary = getAllIconDictioary(); - const allIconNamesSorted = allIconDictionary.keysArray().sort(); - const appendIconDictionary = getAppendedIconDictionary(); - const allAppendIconNames = appendIconDictionary.keysArray(); - const customConfig = JSON.parse(localStorage.getItem(customConfigTag)); - - let i = 0; - allIconNamesSorted.forEach(name => { - if (!alreadyAddedNames.includes(name)) { - const listElement = createListElement(name, i % 2 === 0); - htmlList.appendChild(listElement); - i++; - alreadyAddedNames.push(name); - } - }); - - allAppendIconNames.forEach(name => { - if (!alreadyAddedNames.includes(name)) { - const listElement = createListElement(name, i % 2 === 0); - htmlList.appendChild(listElement); - i++; - } - }); - - if (customConfig && - ( - customConfig.actors && Object.keys(customConfig.actors).length !== 0 || - customConfig.workObjects && Object.keys(customConfig.workObjects).length !== 0 - )) { - createCustomActorAndWorkobjectIconList(customConfig); - } else { - createStandardActorAndWorkobjectIconList(); - } -} - -function setStyles(listElement, radioElement, verticalLineElement, imageElement, greyBackground) { - setListElementStyle(listElement); - setRadioElementStyle(radioElement); - setVerticalLineElementStyle(verticalLineElement); - setImageElementStyle(imageElement); - - if (greyBackground) { - listElement.style.backgroundColor = highlightBackgroundColor; - } -} - -function fillRadioElement(radioElement, inputRadioNone, inputRadioActor, inputRadioWorkObject) { - - radioElement.appendChild(inputRadioNone); - radioElement.appendChild(inputRadioActor); - radioElement.appendChild(inputRadioWorkObject); - - radioElement.addEventListener('click', function() { - const children = radioElement.children; - const actorButton = children[1]; - const workObjectButton = children[2]; - - const currentSelectionName = actorButton.name; - let addToActors = false; - let addToWorkObjects = false; - if (actorButton.checked) { - addToActors = true; - } else if (workObjectButton.checked) { - addToWorkObjects = true; - } - updateSelectedWorkObjectsAndActors( - currentSelectionName, - addToActors, - addToWorkObjects, - true - ); - }); - -} - -function setRadioButtonAttributes(button, name, value) { - button.setAttribute('type', 'radio'); - button.setAttribute('name', name); - button.setAttribute('value', value); -} - -function createCustomActorAndWorkobjectIconList(customConfig) { - - const orderedActorsList = Object.keys(customConfig.actors); - const orderedWorkobjectList = Object.keys(customConfig.workObjects); - - orderedActorsList.forEach(a => addToSelectedActors(a, customConfig.actors[a])); - createSelectedActionsIconList(); - - orderedWorkobjectList.forEach(w => addToSelectedWorkObjects(w, customConfig.workObjects[w])); - createSelectedWorkObjectsIconList(); - - orderedActorsList.forEach(actorKey => { - selectedActorsList.appendChild( - actorListArray.filter(element => element.getElementsByTagName('text')[0].innerText === actorKey)[0] - ); - }); - orderedWorkobjectList.forEach(workObjectKey => { - selectedWorkObjectList.appendChild( - workObjectListArray.filter(element => element.getElementsByTagName('text')[0].innerText === workObjectKey)[0] - ); - }); - - actorListArray.filter(element => !orderedActorsList.includes(element.getElementsByTagName('text')[0].innerText)).forEach(ele => { - selectedActorsList.appendChild(ele); - }); - - workObjectListArray.filter(element => !orderedWorkobjectList.includes(element.getElementsByTagName('text')[0].innerText)).forEach(ele => { - selectedWorkObjectList.appendChild(ele); - }); -} - -function createStandardActorAndWorkobjectIconList() { - default_conf.actors.forEach(a => addToSelectedActors(a, getAllIconDictioary().get(a))); - createSelectedActionsIconList(); // fill actorListArray - - default_conf.workObjects.forEach(w => addToSelectedWorkObjects(w, getAllIconDictioary().get(w))); - createSelectedWorkObjectsIconList(); // fill workObjectListArray - - actorListArray = sortAfterDefaultConfig(default_conf.actors, actorListArray); - workObjectListArray = sortAfterDefaultConfig(default_conf.workObjects, workObjectListArray); - - actorListArray.forEach(actor => { - selectedActorsList.appendChild(actor); - }); - - workObjectListArray.forEach(workobject => { - selectedWorkObjectList.appendChild(workobject); - }); -} - -function updateBackgroundColors() { - const children = htmlList.children; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (i % 2 === 0) { - child.style.backgroundColor = highlightBackgroundColor; - } else { - child.style.backgroundColor = 'white'; - } - } -} - -function dropElement(event) { - const target = event.to; - const source = event.srcElement; - const draggedItem = event.item; - - let listEntryName = draggedItem.lastChild.innerText; - if (target != source) { - let addToActors, addToWorkObjects; - if (target == selectedActorsList) { - addToActors = true; - addToWorkObjects = false; - } else { - addToActors = false; - addToWorkObjects = true; - } - updateSelectedWorkObjectsAndActors( - listEntryName, - addToActors, - addToWorkObjects, - false - ); - } else { - let updateActors, updateWorkObjects; - if (target == selectedActorsList) { - updateActors = true; - updateWorkObjects = false; - } else { - updateActors = false; - updateWorkObjects = true; - } - updateDictionaryOrder(updateActors, updateWorkObjects); - } -} - -function updateDictionaryOrder(updateActors, updateWorkObjects) { - if (updateActors) { - emptySelectedActorsDictionary(); - const actorListElements = selectedActorsList.getElementsByTagName('li'); - - let element; - for (element of actorListElements) { - addToSelectedActors(element.innerText, getIconSource(element.innerText)); - } - - } else if (updateWorkObjects) { - emptySelectedWorkObjectsDictionary(); - const workObjectListElements = selectedWorkObjectList.getElementsByTagName('li'); - - let element; - for (element of workObjectListElements) { - addToSelectedWorkObjects(element.innerText, getIconSource(element.innerText)); - } - } -} - -function removeListEntry(name, list) { - const children = list.children; - let wantedChild; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - let innerText = child.innerText; - if (innerText.includes(name)) { - wantedChild = child; - } - } - if (wantedChild) { - list.removeChild(wantedChild); - } -} - -function updateSelectedWorkObjectsAndActors( - currentSelectionName, - addToActors, - addToWorkObjects, - updateHTML -) { - const exportConfigurationButton = document.getElementById( - 'exportConfigurationButton' - ); - const customIconConfigSaveButton = document.getElementById( - 'customIconConfigSaveButton' - ); - const iconSRC = getIconSource(currentSelectionName); - - deleteFromSelectedWorkObjectDictionary(currentSelectionName); - deleteFromSelectedActorDictionary(currentSelectionName); - - if (updateHTML) { - removeListEntry(currentSelectionName, selectedActorsList); - removeListEntry(currentSelectionName, selectedWorkObjectList); - } - - if (addToActors) { - addToActorsAndUpdateHTML(currentSelectionName, iconSRC, updateHTML); - } else if (addToWorkObjects) { - addToWorkobjectsAndUpdateHTML(currentSelectionName, iconSRC, updateHTML); - } - - togglButtons(exportConfigurationButton, customIconConfigSaveButton); - - if (!updateHTML) { - const correspondingAllIconElement = document - .evaluate( - "//text[contains(., '" + currentSelectionName + "')]", - document, - null, - XPathResult.ANY_TYPE, - null - ) - .iterateNext().parentNode; - - const radioButtons = correspondingAllIconElement.children[0]; - const radioActor = radioButtons.children[1]; - const radioWorkObject = radioButtons.children[2]; - - if (addToActors) { - radioActor.checked = true; - radioWorkObject.checked = false; - } else { - radioActor.checked = false; - radioWorkObject.checked = true; - } - } -} - -function addToActorsAndUpdateHTML(currentSelectionName, iconSRC, updateHTML) { - addToSelectedActors(currentSelectionName, iconSRC); - if (updateHTML) { - selectedActorsList.appendChild( - createListElementInSeletionList( - currentSelectionName, - iconSRC, - selectedActorsList - ) - ); - } -} - -function addToWorkobjectsAndUpdateHTML(currentSelectionName, iconSRC, updateHTML) { - addToSelectedWorkObjects(currentSelectionName, iconSRC); - if (updateHTML) { - selectedWorkObjectList.appendChild( - - createListElementInSeletionList( - currentSelectionName, - iconSRC, - selectedWorkObjectList - ) - ); - } -} - -function togglButtons(exportConfigurationButton, customIconConfigSaveButton) { - if (selectedDitionariesAreNotEmpty()) { - exportConfigurationButton.disabled = false; - exportConfigurationButton.style.opacity = 1; - - customIconConfigSaveButton.disabled = false; - customIconConfigSaveButton.style.opacity = 1; - } else { - exportConfigurationButton.disabled = true; - exportConfigurationButton.style.opacity = 0.5; - - customIconConfigSaveButton.disabled = true; - customIconConfigSaveButton.style.opacity = 0.5; - } -} - -function createSelectedActionsIconList() { - getSelectedActorsDictionary().entries.forEach(e => { - actorListArray.push(createListElementInSeletionList( - e.key, - getIconSource(e.key), - selectedActorsList - )); - }); -} - -function createSelectedWorkObjectsIconList() { - getSelectedWorkObjectsDictionary().entries.forEach(e => { - workObjectListArray.push(createListElementInSeletionList( - e.key, - getIconSource(e.key), - selectedWorkObjectList - )); - }); -} - -function clearAllElementList() { - if (domExists()) { - while (htmlList.firstChild) { - htmlList.removeChild(htmlList.firstChild); - } - alreadyAddedNames = []; - } -} - -// this function puts an array in the order given by another array -function sortAfterDefaultConfig(configArray, arrayToSort) { - const orderedArray = []; - configArray.forEach(element => { - arrayToSort.forEach(entry => { - if (entry.innerText === element) { - orderedArray.push(entry); - } - }); - }); - return orderedArray; -} diff --git a/app/domain-story-modeler/features/iconSetCustomization/dictionaries.js b/app/domain-story-modeler/features/iconSetCustomization/dictionaries.js deleted file mode 100644 index 13fd6af2..00000000 --- a/app/domain-story-modeler/features/iconSetCustomization/dictionaries.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -import { all_icons, appendedIcons } from '../../language/icon/all_Icons'; -import { Dict } from '../../language/classes/collection'; - -let allIconDictionary= new Dict(); -let selectedAsActorDictionary = new Dict(); -let selectedAsWorkObjectDictionary = new Dict(); - -export function getAppendedIconDictionary() { - if (allIconDictionary.length < 1) { - initializeAllIcons(); - } - let appendedDict = new Dict(); - appendedIcons.keysArray().forEach(key => { - if (!allIconDictionary.has(key)) { - appendedDict.set(key, appendedIcons.get(key)); - } - }); - return appendedDict; -} - -export function initializeAllIcons() { - let allIconsJSON = all_icons; - - allIconDictionary.addEach(allIconsJSON); -} - -export function getIconSource(name) { - if (allIconDictionary.has(name)) - return allIconDictionary.get(name); - else if (appendedIcons.has(name)) { - return appendedIcons.get(name); - } - return null; -} - -export function getAllIconDictioary() { - return allIconDictionary; -} - -export function getSelectedActorsDictionary() { - return selectedAsActorDictionary; -} - -export function getSelectedWorkObjectsDictionary() { - return selectedAsWorkObjectDictionary; -} - -export function addToSelectedActors(name, src) { - selectedAsActorDictionary.set(name, src); -} - -export function addToSelectedWorkObjects(name, src) { - selectedAsWorkObjectDictionary.set(name, src); -} - -export function deleteFromSelectedActorDictionary(name) { - return selectedAsActorDictionary.delete(name); -} - -export function deleteFromSelectedWorkObjectDictionary(name) { - return selectedAsWorkObjectDictionary.delete(name); -} - -export function selectedDitionariesAreNotEmpty() { - return (selectedAsActorDictionary.length > 0 && selectedAsWorkObjectDictionary.length >0); -} - -export function resetSelectionDictionaries() { - selectedAsActorDictionary.clear(); - selectedAsWorkObjectDictionary.clear(); -} - -export function emptySelectedActorsDictionary() { - selectedAsActorDictionary.clear(); -} - -export function emptySelectedWorkObjectsDictionary() { - selectedAsWorkObjectDictionary.clear(); -} diff --git a/app/domain-story-modeler/features/iconSetCustomization/persitence.js b/app/domain-story-modeler/features/iconSetCustomization/persitence.js deleted file mode 100644 index 488c0717..00000000 --- a/app/domain-story-modeler/features/iconSetCustomization/persitence.js +++ /dev/null @@ -1,344 +0,0 @@ -'use strict'; - -import { - getSelectedActorsDictionary, - getSelectedWorkObjectsDictionary, - getAppendedIconDictionary, - getIconSource, - addToSelectedWorkObjects, - addToSelectedActors, - resetSelectionDictionaries -} from './dictionaries'; -import { createObjectListForDSTDownload } from '../export/dstDownload'; -import { version } from '../../../../package.json'; -import { appendSRCFile } from '../../language/icon/iconConfig'; -import { - createListElement, - createListElementInSeletionList, - resetHTMLSelectionList -} from './customizationDialog'; -import { ACTOR, WORKOBJECT } from '../../language/elementTypes'; -import { domExists } from '../../language/testmode'; -import { getTypeDictionary } from '../../language/icon/dictionaries'; -import { all_icons } from '../../language/icon/all_Icons'; -import { getAllCanvasObjects } from '../../language/canvasElementRegistry'; -import { Dict } from '../../language/classes/collection'; - -export const useCustomConfigTag = 'useCustomConfig'; -export const useNecessaryConfigTag = 'useNecessaryConfig'; -export const customConfigTag = 'customConfig'; -export const appendedIconsTag = 'appendedIcons'; -export const storyPersistTag = 'persistetStory'; -export const customConfigNameTag = 'persitedDomainName'; - -export function setToDefault() { - persistStory(); - localStorage.removeItem(useCustomConfigTag); - localStorage.removeItem(customConfigTag); - localStorage.removeItem(appendedIconsTag); - localStorage.removeItem(customConfigNameTag); - localStorage.setItem(useNecessaryConfigTag, true); - persistNecessaryConfig(); - if (domExists()) { - location.reload(); - } -} - -export function exportConfiguration() { - let actors = getSelectedActorsDictionary(); - let workObjects = getSelectedWorkObjectsDictionary(); - let configJSONString; - - if (actors.size() > 0 && workObjects.size() > 0) { - configJSONString = JSON.stringify( - createConfigFromDictionaries( - actors, - undefined, - workObjects, - undefined, - document.getElementById('domainNameInput').value - ) - ); - - let domainNameInput = document.getElementById('domainNameInput'); - let filename = domainNameInput.value || 'domain'; - let element = document.createElement('a'); - - element.setAttribute( - 'href', - 'data:text/plain;charset=utf-8,' + encodeURIComponent(configJSONString) - ); - element.setAttribute('download', filename + '.domain'); - element.style.display = 'none'; - document.body.appendChild(element); - - element.click(); - - document.body.removeChild(element); - } - - return configJSONString; -} - -export function importConfiguration(input) { - let reader = new FileReader(); - - reader.onloadend = function(e) { - let domainName = loadConfiguration(e.target.result); - if (!domainName && input.name.endsWith('.domain')) { - domainName = input.name.replace('.domain'); - } - const domainNameInput = document.getElementById('domainNameInput'); - domainNameInput.value = domainName; - }; - reader.readAsText(input); -} - -export function saveIconConfiguration(elements) { - persistStory(elements); - - let actors = getSelectedActorsDictionary(); - let workObjects = getSelectedWorkObjectsDictionary(); - let actorOrder = [], workobjectOrder = []; - let selectedActorsList = document.getElementById('selectedActorsList'); - let domainNameInput = document.getElementById('domainNameInput'); - let name = ''; - - if (selectedActorsList) { - if (!actors.size > 0) { - actors = getTypeDictionary(ACTOR); - } else { - actors.entries.forEach(entry => actorOrder.push(entry.key)); - } - if (!workObjects.size > 0) { - workObjects = getTypeDictionary(WORKOBJECT); - } else { - workObjects.entries.forEach(entry => workobjectOrder.push(entry.key)); - } - if (domainNameInput) { - name = domainNameInput.value; - } - } - - let configJSONString = JSON.stringify( - createConfigFromDictionaries(actors, actorOrder, workObjects, workobjectOrder, name) - ); - - - localStorage.setItem(useCustomConfigTag, true); - localStorage.setItem(customConfigTag, configJSONString); - localStorage.setItem( - appendedIconsTag, - JSON.stringify(getAppendedIconDictionary()) - ); - localStorage.setItem(customConfigNameTag, name); - - if (domExists()) { - location.reload(); - } -} - -export function loadConfiguration(customConfig) { - let actorDict = new Dict(); - let workObjectDict = new Dict(); - let customConfigJSON = JSON.parse(customConfig); - - const configurationName = customConfigJSON.name; - let actors = customConfigJSON.actors; - let workObjects = customConfigJSON.workObjects; - - resetSelectionDictionaries(); - resetHTMLSelectionList(); - - actorDict.addEach(actors); - workObjectDict.addEach(workObjects); - actors = actorDict.keysArray(); - workObjects = workObjectDict.keysArray(); - - appendSRCFile(actors, actorDict, workObjects, workObjectDict); - - let appendedDict = getAppendedIconDictionary(); - - if (domExists()) { - updateHTMLLists(appendedDict, actorDict, workObjectDict); - } - - actorDict.keysArray().forEach(name => { - addToSelectedActors(name, getIconSource(name)); - }); - workObjectDict.keysArray().forEach(name => { - addToSelectedWorkObjects(name, getIconSource(name)); - }); - - return configurationName; -} - -export function createConfigFromDictionaries( - actorsDict, - actorOrder, - workObjectsDict, - workobjectOrder, - name -) { - let actors = actorsDict.keysArray(); - let workObjects = workObjectsDict.keysArray(); - let actorsJSON = {}; - let workObjectJSON = {}; - - if (actorOrder) { - actorOrder.forEach(actor => { - actorsJSON[actor.replace(ACTOR, '')] = actorsDict.get(actor); - }); - } - if (workobjectOrder) { - workobjectOrder.forEach(workObject => { - workObjectJSON[workObject.replace(WORKOBJECT, '')] = workObjectsDict.get( - workObject - ); - }); - } - - actors.forEach(actor => { - if (!actorOrder || !actorOrder.includes(actor)) { - actorsJSON[actor.replace(ACTOR, '')] = actorsDict.get(actor); - } - }); - - workObjects.forEach(workObject => { - if (!workobjectOrder || !workobjectOrder.includes(workObject)) { - workObjectJSON[workObject.replace(WORKOBJECT, '')] = workObjectsDict.get( - workObject - ); - } - }); - - let config = { - name: name, - actors: actorsJSON, - workObjects: workObjectJSON - }; - - return config; -} - -function updateHTMLLists(appendedDict, actorDict, workObjectDict) { - let htmlList = document.getElementById('allIconsList'); - let selectedActorsList = document.getElementById('selectedActorsList'); - let selectedWorkObjectList = document.getElementById( - 'selectedWorkObjectsList' - ); - - resetHTMLSelectionList(); - - appendedDict.keysArray().forEach(name => { - let listElement = createListElement(name); - htmlList.appendChild(listElement); - }); - - actorDict.keysArray().forEach(name => { - appendToList(htmlList, selectedActorsList, name, 1); - }); - - workObjectDict.keysArray().forEach(name => { - appendToList(htmlList, selectedWorkObjectList, name, 2); - }); -} - -function appendToList(htmlList, selectedList, name, j) { - for (let i = 0; i < htmlList.children.length; i++) { - let child = htmlList.children[i]; - - if (child.innerText == name) { - child.children[0].children[j].checked = true; - const listItem = createListElementInSeletionList( - name, - getIconSource(name), - selectedList - ); - selectedList.appendChild(listItem); - } - } -} - -function persistStory() { - let objects = createObjectListForDSTDownload(version); - let title = document.getElementById('title'); - let titleText = ''; - - if (title) { - titleText = title.innerText; - } - - localStorage.setItem( - storyPersistTag, - JSON.stringify({ - title: titleText, - objects: objects - }) - ); -} - -function persistNecessaryConfig() { - const allCanvasObjects = getAllCanvasObjects(); - - let currentConfig = createConfigFromDictionaries( - getSelectedActorsDictionary(), - null, - getSelectedWorkObjectsDictionary(), - null, - '' - ); - let canvasObjectTypes = []; - let currentActors = new Dict(); - let currentWorkobjects = new Dict(); - let allActors = new Dict(); - let allWorkobjects = new Dict(); - let newActors = {}; - let newWorkobjects = {}; - - currentActors.addEach(currentConfig.actors); - currentWorkobjects.addEach(currentConfig.workObjects); - - currentActors.keysArray().forEach(name => { - if (!all_icons[name]) { - allActors.add(currentActors.get(name), name); - } - }); - - currentWorkobjects.keysArray().forEach(name => { - if (!all_icons[name]) { - allWorkobjects.add(currentWorkobjects.get(name), name); - } - }); - - allCanvasObjects.forEach(object => { - const objectType = object.type.replace(ACTOR, '').replace(WORKOBJECT, ''); - if (!canvasObjectTypes.includes(objectType)) { - canvasObjectTypes.push(objectType); - } - }); - - allActors.keysArray().forEach(key => { - if (canvasObjectTypes.includes(key)) { - newActors[key] = allActors.get(key); - } - }); - - allWorkobjects.keysArray().forEach(key => { - if (canvasObjectTypes.includes(key)) { - newWorkobjects[key] = allWorkobjects.get(key); - } - }); - - let config = { - name: '', - actors: newActors, - workObjects: newWorkobjects - }; - - localStorage.setItem(customConfigTag, JSON.stringify(config)); - localStorage.setItem( - appendedIconsTag, - JSON.stringify(getAppendedIconDictionary()) - ); -} diff --git a/app/domain-story-modeler/features/iconSetCustomization/styling.js b/app/domain-story-modeler/features/iconSetCustomization/styling.js deleted file mode 100644 index 70551aa8..00000000 --- a/app/domain-story-modeler/features/iconSetCustomization/styling.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -export const iconSize = 20; - -export function setImageElementStyle(imageElement) { - imageElement.width = iconSize; - imageElement.height = iconSize; - imageElement.style.marginLeft = '5px'; -} - -export function setRadioElementStyle(radioElement) { - radioElement.id = 'radioButtons'; - radioElement.style.display = 'grid'; - radioElement.style.gridTemplateColumns = '45px 45px 30px'; -} - -export function setVerticalLineElementStyle(verticalLineElement) { - verticalLineElement.style.display = 'inline'; - verticalLineElement.style.borderLeft = 'solid 1px black'; - verticalLineElement.width = '1px'; - verticalLineElement.heigth = '15px'; - verticalLineElement.style.overflowY = 'visible'; - verticalLineElement.style.marginLeft = '5px';} - -export function setListElementStyle(listElement) { - listElement.style.marginLeft = '5px'; - listElement.style.height = '20px'; - listElement.style.display = 'grid'; - listElement.style.gridTemplateColumns = '125px 10px 30px auto'; - listElement.style.borderTop = 'solid 1px black'; -} \ No newline at end of file diff --git a/app/domain-story-modeler/features/import/ImportRepair.js b/app/domain-story-modeler/features/import/ImportRepair.js deleted file mode 100644 index 3d2ab3e3..00000000 --- a/app/domain-story-modeler/features/import/ImportRepair.js +++ /dev/null @@ -1,136 +0,0 @@ -'use strict'; - -import { ACTIVITY, CONNECTION, WORKOBJECT } from '../../language/elementTypes'; -import { - getAllCanvasObjects, - getAllGroups -} from '../../language/canvasElementRegistry'; -import { isInDomainStoryGroup } from '../../util/TypeCheck'; -import { assign } from 'min-dash'; - -export function checkElementReferencesAndRepair(elements) { - let activities = []; - let objectIDs = []; - - let complete = true; - - elements.forEach(element => { - const type = element.type; - if (type == ACTIVITY || type == CONNECTION) { - activities.push(element); - } else { - objectIDs.push(element.id); - } - }); - - activities.forEach(activity => { - const source = activity.source; - const target = activity.target; - if (!objectIDs.includes(source) || !objectIDs.includes(target)) { - complete = false; - const activityIndex = elements.indexOf(activity); - elements = elements.splice(activityIndex, 1); - } - }); - return complete; -} - -// when importing a domain-story, the elements that are visually inside a group are not yet associated with it. -// to ensure they are correctly associated, we add them to the group -export function correctGroupChildren() { - const allObjects = getAllCanvasObjects(); - const groups = getAllGroups(); - - groups.forEach(group => { - const parent = group.parent; - parent.children.slice().forEach(innerShape => { - if (innerShape.id != group.id) { - if (innerShape.x >= group.x && innerShape.x <= group.x + group.width) { - if ( - innerShape.y >= group.y && - innerShape.y <= group.y + group.height - ) { - innerShape.parent = group; - if (!group.children.includes(innerShape)) { - group.children.push(innerShape); - } - } - } - } - }); - }); - allObjects.forEach(shape => { - let businessObject = shape.businessObject; - if (isInDomainStoryGroup(shape)) { - assign(businessObject, { - parent: shape.parent.id - }); - } - }); -} - -/** - * Ensure backwards compatability. - * Previously Document had no special name and was just adressed as workObject - * Bubble was renamed to Conversation - */ - -export function updateCustomElementsPreviousv050(elements) { - for (let i = 0; i < elements.length; i++) { - if (elements[i].type === WORKOBJECT) { - elements[i].type = WORKOBJECT + 'Document'; - } else if (elements[i].type === WORKOBJECT + 'Bubble') { - elements[i].type = WORKOBJECT + 'Conversation'; - } - } - return elements; -} - -export function adjustPositions(elements) { - let xLeft, yUp; - let isFirst = true; - - elements.forEach(element => { - let elXLeft, elYUp; - if (element.type != ACTIVITY && element.type != CONNECTION) { - if (isFirst) { - xLeft = parseFloat(element.x); - yUp = parseFloat(element.y); - isFirst = false; - } - elXLeft = parseFloat(element.x); - elYUp = parseFloat(element.y); - if (elXLeft < xLeft) { - xLeft = elXLeft; - } - if (elYUp < yUp) { - yUp = elYUp; - } - } - }); - - if (xLeft < 75 || xLeft > 150 || yUp < 0 || yUp > 50) { - - // add Padding for the Palette and the top - xLeft -= 75; - yUp -= 50; - - elements.forEach(element => { - if (element.type == ACTIVITY || element.type == CONNECTION) { - let waypoints = element.waypoints; - waypoints.forEach(point => { - point.x -= xLeft; - point.y -= yUp; - - if (point.original) { - point.original.x = point.x; - point.original.y = point.y; - } - }); - } else { - element.x -= xLeft; - element.y -= yUp; - } - }); - } -} diff --git a/app/domain-story-modeler/features/import/import.js b/app/domain-story-modeler/features/import/import.js deleted file mode 100644 index 6601c0ea..00000000 --- a/app/domain-story-modeler/features/import/import.js +++ /dev/null @@ -1,414 +0,0 @@ -'use strict'; - -import { DOMAINSTORY, WORKOBJECT, ACTOR } from '../../language/elementTypes'; -import { - checkElementReferencesAndRepair, - updateCustomElementsPreviousv050, - adjustPositions, - correctGroupChildren -} from './ImportRepair'; -import { cleanDictionaries } from '../dictionary/dictionary'; -import { - correctElementRegitryInit, - initElementRegistry -} from '../../language/canvasElementRegistry'; -import { - storyPersistTag, - loadConfiguration, - importConfiguration, - saveIconConfiguration -} from '../iconSetCustomization/persitence'; -import { removeDirtyFlag } from '../export/dirtyFlag'; -import { addIMGToIconDictionary } from '../iconSetCustomization/appendIconDictionary'; -import { debounce, changeWebsiteTitle } from '../../util/helpers'; -import { domExists } from '../../language/testmode'; -import { - getTypeDictionaryKeys, - allInTypeDictionary, - registerIcons -} from '../../language/icon/dictionaries'; -import { sanitizeIconName } from '../../util/Sanitizer'; -import { Dict } from '../../language/classes/collection'; - -export const DST_TYPE = 1; -export const SVG_TYPE = 2; - -let modal = document.getElementById('modal'), - info = document.getElementById('info'), - infoText = document.getElementById('infoText'), - titleInput = document.getElementById('titleInput'), - title = document.getElementById('title'), - versionInfo = document.getElementById('versionInfo'), - brokenDSTInfo = document.getElementById('brokenDSTInfo'), - brokenSVGInfo = document.getElementById('brokenSVGInfo'), - importedVersionLabel = document.getElementById('importedVersion'), - modelerVersionLabel = document.getElementById('modelerVersion'), - brokenDSTDialogButtonCancel = document.getElementById( - 'brokenDSTDialogButtonCancel' - ), - brokenSVGDialogButtonCancel = document.getElementById( - 'brokenSVGDialogButtonCancel' - ), - versionDialogButtonCancel = document.getElementById('closeVersionDialog'); - -let titleInputLast = '', - descriptionInputLast = ''; - -if (versionDialogButtonCancel) { - versionDialogButtonCancel.addEventListener('click', function() { - modal.style.display = 'none'; - versionInfo.style.display = 'none'; - }); - - brokenDSTDialogButtonCancel.addEventListener('click', function() { - closeBrokenDSTDialog(); - }); - - brokenSVGDialogButtonCancel.addEventListener('click', function() { - closeBrokenSVGDialog(); - }); -} - -export function getTitleInputLast() { - return titleInputLast; -} - -export function getDescriptionInputLast() { - return descriptionInputLast; -} - -export function setDescriptionInputLast(description) { - descriptionInputLast = description; -} - -export function setTitleInputLast(title) { - titleInputLast = title; -} - -export function initImports( - elementRegistry, - version, - modeler, - eventBus, - saveSVG -) { - document.getElementById('import').onchange = function() { - initElementRegistry(elementRegistry); - const filename = document.getElementById('import').files[0].name; - if (filename.endsWith('.dst')) { - importDST(document.getElementById('import').files[0], filename, version, modeler); - } else if (filename.endsWith('.svg')) { - importSVG(document.getElementById('import').files[0], filename, version, modeler); - } - - // to update the title of the svg, we need to tell the command stack, that a value has changed - eventBus.fire('commandStack.changed', debounce(saveSVG, 500)); - - titleInputLast = titleInput.value; - }; - - document.getElementById('importIcon').onchange = function() { - const inputIcon = document.getElementById('importIcon').files[0]; - let reader = new FileReader(); - const endIndex = inputIcon.name.lastIndexOf('.'); - let name = sanitizeIconName(inputIcon.name.substring(0, endIndex)); - - reader.onloadend = function(e) { - addIMGToIconDictionary(e.target.result, name + '-custom'); - }; - - reader.readAsDataURL(inputIcon); - }; - - document.getElementById('importConfig').onchange = function() { - importConfiguration(document.getElementById('importConfig').files[0]); - }; -} - -export function loadPersistedDST(modeler) { - (titleInputLast = ''), (descriptionInputLast = ''); - - const persitedStory = localStorage.getItem(storyPersistTag); - localStorage.removeItem(storyPersistTag); - - const completeJSON = JSON.parse(persitedStory); - const titleText = completeJSON.title; - const elements = completeJSON.objects; - - const title = document.getElementById('title'); - title.innerText = titleText; - changeWebsiteTitle(titleText); - - let lastElement = elements.pop(); - let importVersionNumber = lastElement; - if (lastElement.version) { - lastElement = elements.pop(); - } - if (importVersionNumber.version) { - importVersionNumber = importVersionNumber.version; - } else { - importVersionNumber = '?'; - } - - updateIconRegistries(elements); - - setInfoText(lastElement); - - modeler.importCustomElements(elements); - correctElementRegitryInit(); - cleanDictionaries(); - removeDirtyFlag(); -} - -export function restoreTitleFromFileName(filename, isSVG) { - let title = ''; - - const dstRegex = /_\d+-\d+-\d+( ?_?-?\(\d+\))?(-?\d)?.dst/; - const svgRegex = /_\d+-\d+-\d+( ?_?-?\(\d+\))?(-?\d)?.dst.svg/; - - const dstSuffix = '.dst'; - const svgSuffix = '.svg'; - - let filenameWithoutDateSuffix = filename.replace(isSVG ? svgRegex : dstRegex, - '' - ); - if (filenameWithoutDateSuffix.includes(isSVG? svgSuffix : dstSuffix, '')) { - filenameWithoutDateSuffix = filenameWithoutDateSuffix.replace(isSVG? svgSuffix : dstSuffix, ''); - } - title = filenameWithoutDateSuffix; - return title; -} - -export function importDST(input, filename, version, modeler) { - titleInputLast = ''; - descriptionInputLast = ''; - - const reader = new FileReader(); - let titleText = restoreTitleFromFileName(filename, false); - titleInput.value = titleText; - title.innerText = titleText; - changeWebsiteTitle(titleText); - - reader.onloadend = function(e) { - readerFunction(e.target.result, version, modeler, DST_TYPE); - }; - - reader.readAsText(input); -} - -export function importSVG(input, filename, version, modeler) { - titleInputLast = ''; - descriptionInputLast = ''; - - const reader = new FileReader(); - let titleText = restoreTitleFromFileName(filename, true); - titleInput.value = titleText; - title.innerText = titleText; - changeWebsiteTitle(titleText); - - reader.onloadend = function(e) { - readerFunction(e.target.result, version, modeler, SVG_TYPE); - }; - - reader.readAsText(input); -} - -export function readerFunction(text, version, modeler, type) { - let dstText; - if (type === SVG_TYPE) { - dstText = removeXMLComments(text); - } else if (type === DST_TYPE) { - dstText = text; - } - - let elements, config; - let configChanged = false; - - let dstAndConfig; - try { - dstAndConfig = JSON.parse(dstText); - } catch (e) { - if (type === DST_TYPE) { - showBrokenDSTDialog(); - } - else if (type === SVG_TYPE) { - showBrokenSVGDialog(); - } - } - - if (dstAndConfig == null) { - return; - } - - if (dstAndConfig.domain) { - config = dstAndConfig.domain; - configChanged = configHasChanged(config); - if (configChanged) { - const name = loadConfiguration(config); - if (domExists()) { - const domainNameInput = document.getElementById('domainNameInput'); - domainNameInput.value = name; - } - } - elements = JSON.parse(dstAndConfig.dst); - } else { - if (dstAndConfig.config) { - config = dstAndConfig.config; - configChanged = configHasChanged(config); - if (configChanged) { - const name = loadConfiguration(config); - if (domExists()) { - const domainNameInput = document.getElementById('domainNameInput'); - domainNameInput.value = name; - } - } - elements = JSON.parse(dstAndConfig.dst); - } else { - elements = JSON.parse(dstText); - } - } - - let lastElement = elements.pop(); - let importVersionNumber = lastElement; - - if (lastElement.version) { - lastElement = elements.pop(); - } - if (domExists()) { - if (importVersionNumber.version) { - importVersionNumber = importVersionNumber.version; - } else { - importVersionNumber = '?'; - } - if (version != importVersionNumber) { - importedVersionLabel.innerText = 'v' + importVersionNumber; - modelerVersionLabel.innerText = 'v' + version; - showVersionDialog(); - elements = updateCustomElementsPreviousv050(elements); - } - - const allReferences = checkElementReferencesAndRepair(elements); - if (!allReferences) { - showBrokenDSTDialog(); - } - - setInfoText(lastElement); - - adjustPositions(elements); - } - - updateIconRegistries(elements); - modeler.importCustomElements(elements); - - if (configChanged) { - saveIconConfiguration(); - } - if (domExists()) { - correctElementRegitryInit(); - cleanDictionaries(); - correctGroupChildren(); - removeDirtyFlag(); - } -} - -function removeXMLComments(xmlText) { - xmlText = xmlText.substring(xmlText.indexOf('')); - while (xmlText.includes('')) { - xmlText = xmlText.replace('', ''); - } - xmlText = xmlText.replace('', ''); - xmlText = xmlText.replace('', ''); - return xmlText; -} - -export function configHasChanged(config) { - const customConfigJSON = JSON.parse(config); - const newActorsDict = new Dict(); - const newWorkObjectsDict = new Dict(); - - newActorsDict.addEach(customConfigJSON.actors); - newWorkObjectsDict.addEach(customConfigJSON.workObjects); - - const newActorKeys = newActorsDict.keysArray(); - const newWorkObjectKeys = newWorkObjectsDict.keysArray(); - const currentActorKeys = getTypeDictionaryKeys(ACTOR); - const currentWorkobjectKeys = getTypeDictionaryKeys(WORKOBJECT); - - let changed = false; - - for (let i = 0; i < newActorKeys.length; i++) { - if ( - currentActorKeys[i] != newActorKeys[i] && - currentActorKeys[i] != (ACTOR + newActorKeys[i]) - ) { - changed = true; - i = newActorKeys.length; - } - } - if (!changed) { - for (let i = 0; i < newWorkObjectKeys.length; i++) { - if ( - currentWorkobjectKeys[i] != newWorkObjectKeys[i] && - currentWorkobjectKeys[i] != (WORKOBJECT + newWorkObjectKeys[i]) - ) { - changed = true; - i = newWorkObjectKeys.length; - } - } - } - return changed; -} - -function setInfoText(element) { - const inputInfoText = element.info ? element.info : ''; - info.innerText = inputInfoText; - info.value = inputInfoText; - infoText.innerText = inputInfoText; -} - -function updateIconRegistries(elements) { - const actorIcons = getElementsOfType(elements, 'actor'); - const workObjectIcons = getElementsOfType(elements, 'workObject'); - - if (!allInTypeDictionary(ACTOR, actorIcons)) { - registerIcons(ACTOR, actorIcons); - } - if (!allInTypeDictionary(WORKOBJECT, workObjectIcons)) { - registerIcons(WORKOBJECT, workObjectIcons); - } -} - -function getElementsOfType(elements, type) { - let elementOfType = []; - elements.forEach(element => { - if (element.type.includes(DOMAINSTORY + type)) { - elementOfType.push(element); - } - }); - return elementOfType; -} - -function showVersionDialog() { - versionInfo.style.display = 'block'; - modal.style.display = 'block'; -} - -function showBrokenDSTDialog() { - brokenDSTInfo.style.display = 'block'; - modal.style.display = 'block'; -} - -function showBrokenSVGDialog() { - brokenSVGInfo.style.display = 'block'; - modal.style.display = 'block'; -} - -function closeBrokenSVGDialog() { - brokenSVGInfo.style.display = 'none'; - modal.style.display = 'none'; -} - -function closeBrokenDSTDialog() { - brokenDSTInfo.style.display = 'none'; - modal.style.display = 'none'; -} \ No newline at end of file diff --git a/app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js b/app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js deleted file mode 100644 index 66f69d13..00000000 --- a/app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js +++ /dev/null @@ -1,140 +0,0 @@ -'use strict'; - -import { - append as svgAppend, - attr as svgAttr, - create as svgCreate, - remove as svgRemove -} from 'tiny-svg'; - -import { is } from 'bpmn-js/lib/util/ModelUtil'; - -import { translate } from 'diagram-js/lib/util/SvgTransformUtil'; -import { ACTIVITY, ACTOR, WORKOBJECT, GROUP, TEXTANNOTATION } from '../../language/elementTypes'; - -const MARKER_HIDDEN = 'djs-element-hidden', - MARKER_LABEL_HIDDEN = 'djs-label-hidden'; - -let annotationBoxHeight = 0; - -export function getAnnotationBoxHeight() { - return annotationBoxHeight; -} - -export default function DSLabelEditingPreview( - eventBus, canvas, pathMap) { - - let self = this; - - let defaultLayer = canvas.getDefaultLayer(); - let element, absoluteElementBBox, gfx; - - eventBus.on('directEditing.activate', function(context) { - let activeProvider = context.active; - - element = activeProvider.element.label || activeProvider.element; - - // text annotation - if (is(element, TEXTANNOTATION)) { - absoluteElementBBox = canvas.getAbsoluteBBox(element); - - gfx = svgCreate('g'); - - annotationBoxHeight = element.height; - - let textPathData = pathMap.getScaledPath('TEXT_ANNOTATION', { - xScaleFactor: 1, - yScaleFactor: 1, - containerWidth: element.width, - containerHeight: element.height, - position: { - mx: 0.0, - my: 0.0 - } - }); - - let path = self.path = svgCreate('path'); - - svgAttr(path, { - d: textPathData, - strokeWidth: 2, - stroke: getStrokeColor(element) - }); - - svgAppend(gfx, path); - - svgAppend(defaultLayer, gfx); - - translate(gfx, element.x, element.y); - } - - if (is(element, TEXTANNOTATION) || - element.labelTarget) { - canvas.addMarker(element, MARKER_HIDDEN); - } else if ( - element.type.includes(ACTOR) || - element.type.includes(WORKOBJECT) || - element.type.includes(ACTIVITY) || - element.type.includes(GROUP)) { - canvas.addMarker(element, MARKER_LABEL_HIDDEN); - } - }); - - eventBus.on('directEditing.resize', function(context) { - - // text annotation - if (is(element, TEXTANNOTATION)) { - let height = context.height, - dy = context.dy; - - let newElementHeight = Math.max(element.height / absoluteElementBBox.height * (height + dy), 0); - annotationBoxHeight = newElementHeight; - - let textPathData = pathMap.getScaledPath('TEXT_ANNOTATION', { - xScaleFactor: 1, - yScaleFactor: 1, - containerWidth: element.width, - containerHeight: newElementHeight, - position: { - mx: 0.0, - my: 0.0 - } - }); - - svgAttr(self.path, { - d: textPathData - }); - } - }); - - eventBus.on(['directEditing.complete', 'directEditing.cancel'], function(context) { - let activeProvider = context.active; - - if (activeProvider) { - canvas.removeMarker(activeProvider.element.label || activeProvider.element, MARKER_HIDDEN); - canvas.removeMarker(element, MARKER_LABEL_HIDDEN); - } - - element = undefined; - absoluteElementBBox = undefined; - - if (gfx) { - svgRemove(gfx); - - gfx = undefined; - } - }); -} - -DSLabelEditingPreview.$inject = [ - 'eventBus', - 'canvas', - 'pathMap' -]; - - -// helpers /////////////////// - -function getStrokeColor() { - return 'black'; -} \ No newline at end of file diff --git a/app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js b/app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js deleted file mode 100644 index 9f034642..00000000 --- a/app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js +++ /dev/null @@ -1,145 +0,0 @@ -'use strict'; - -import { - setLabel, - getLabel, - setNumber, - getNumber -} from './DSLabelUtil'; - -import { - getExternalLabelMid, - isLabelExternal, - hasExternalLabel, - isLabel -} from 'bpmn-js/lib/util/LabelUtil'; - -import { - getBusinessObject, - is -} from 'bpmn-js/lib/util/ModelUtil'; -import { TEXTANNOTATION } from '../../language/elementTypes'; - -const NULL_DIMENSIONS = { - width: 0, - height: 0 -}; - - -/** - * a handler that updates the text of a BPMN element. - */ -export default function DSUpdateLabelHandler(modeling, textRenderer, commandStack) { - - commandStack.registerHandler('element.updateCustomLabel',handlerFunction); - - function handlerFunction() { - - /** - * Set the label and return the changed elements. - * - * Element parameter can be label itself or connection (i.e. sequence flow). - * - * @param {djs.model.Base} element - * @param {String} text - */ - - this.preExecute = function(ctx) { - let element = ctx.element, - businessObject = element.businessObject, - newLabel = ctx.newLabel, - newNumber=ctx.newNumber; - - if (!isLabel(element) - && isLabelExternal(element) - && !hasExternalLabel(element) - && (newLabel !== '' || newNumber !== '')) { - - // create label - let paddingTop = 7; - - let labelCenter = getExternalLabelMid(element); - - labelCenter = { - x: labelCenter.x, - y: labelCenter.y + paddingTop - }; - - modeling.createLabel(element, labelCenter, { - id: businessObject.id + '_label', - businessObject: businessObject - }); - } - }; - - this.execute = function(ctx) { - ctx.oldLabel = getLabel(ctx.element); - ctx.oldNumber= getNumber(ctx.element); - return setText(ctx.element, ctx.newLabel, ctx.newNumber); - }; - - this.revert = function(ctx) { - return setText(ctx.element, ctx.oldLabel, ctx.oldNumber); - }; - - this.postExecute = function(ctx) { - let element = ctx.element, - label = element.label || element, - newLabel = ctx.newLabel, - newBounds = ctx.newBounds; - - if (isLabel(label) && newLabel.trim() === '') { - modeling.removeShape(label); - - return; - } - - // ignore internal labels for elements except text annotations - if (!isLabelExternal(element) && !is(element, TEXTANNOTATION)) { - return; - } - - let bo = getBusinessObject(label); - - let text = bo.name || bo.text; - - // don't resize without text - if (!text) { - return; - } - - // resize element based on label _or_ pre-defined bounds - if (typeof newBounds === 'undefined') { - newBounds = textRenderer.getLayoutedBounds(label, text); - } - - // setting newBounds to false or _null_ will - // disable the postExecute resize operation - if (newBounds) { - modeling.resizeShape(label, newBounds, NULL_DIMENSIONS); - } - }; - } -} - -function setText(element, text, textNumber) { - - // external label if present - let label = element.label || element; - - let number= element.number || element; - - let labelTarget = element.labelTarget || element; - - let numberTarget= element.numberTarget || element; - setLabel(label, text); - setNumber(number, textNumber); - - return [ label, labelTarget, number, numberTarget ]; -} - -DSUpdateLabelHandler.$inject = [ - 'modeling', - 'textRenderer', - 'commandStack' -]; \ No newline at end of file diff --git a/app/domain-story-modeler/features/labeling/index.js b/app/domain-story-modeler/features/labeling/index.js deleted file mode 100644 index e6ea2579..00000000 --- a/app/domain-story-modeler/features/labeling/index.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -import ChangeSupportModule from 'diagram-js/lib/features/change-support'; -import ResizeModule from 'diagram-js/lib/features/resize'; -import DirectEditingModule from 'diagram-js-direct-editing'; - -import CommandStack from 'diagram-js/lib/command/CommandStack'; -import DSUpdateLabelHandler from '../labeling/DSUpdateLabelHandler'; -import DSLabelEditingPreview from './DSLabelEditingPreview'; -import DSLabelEditingProvider from './DSLabelEditingProvider'; -import DSModeling from '../modeling/DSModeling'; - - - -export default { - __depends__: [ - ChangeSupportModule, - ResizeModule, - DirectEditingModule - ], - __init__: [ - 'dSlabelEditingProvider', - 'dSlabelEditingPreview' - ], - dSlabelEditingProvider: [ 'type', DSLabelEditingProvider ], - dSlabelEditingPreview: [ 'type', DSLabelEditingPreview ], - dSUpdateLabelHandler: ['type', DSUpdateLabelHandler], - commandStack: ['type', CommandStack], - modeling: [ 'type ', DSModeling] -}; diff --git a/app/domain-story-modeler/features/labeling/position.js b/app/domain-story-modeler/features/labeling/position.js deleted file mode 100644 index 0c276afe..00000000 --- a/app/domain-story-modeler/features/labeling/position.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; - -import { selectPartOfActivity } from './DSLabelUtil'; - -export function countLines(str) { - return str.split(/\r\n|\r|\n/).length; -} - -// determine the position of the label at the activity -export function labelPosition(waypoints, lines = 1) { - let amountWaypoints = waypoints.length; - let determinedPosition = {}; - let xPos = 0; - let yPos = 0; - - if (amountWaypoints > 2) { - let angleActivity = new Array(amountWaypoints - 1); - for (let i = 0; i < amountWaypoints - 1; i++) { // calculate the angles of the activities - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - - let selectedActivity = selectPartOfActivity(waypoints, angleActivity); - - xPos = labelPositionX(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - yPos = labelPositionY(waypoints[selectedActivity], waypoints[selectedActivity + 1], lines); - - determinedPosition = { - x: xPos, - y: yPos, - selected: selectedActivity - }; - - return determinedPosition; - - } else { - xPos = labelPositionX(waypoints[0], waypoints[1]); - yPos = labelPositionY(waypoints[0], waypoints[1], lines); - - determinedPosition = { - x: xPos, - y: yPos, - selected: 0 - }; - - return determinedPosition; - } -} - -// calculate the X position of the label -export function labelPositionX(startPoint, endPoint) { - let angle = Math.angleBetween(startPoint, endPoint); - let offsetX = 0; - let scaledangle = 0; - - if (angle === 0 || angle === 180 || angle === 90 || angle === 270) { - offsetX = 0; - } - else if (angle > 0 && angle < 90) { // endpoint in upper right quadrant - offsetX = 5 - angle / 6; - } - else if (angle > 90 && angle < 180) { // endpoint in upper left quadrant - scaledangle = angle - 90; - offsetX = 5 - scaledangle / 18; - } - else if (angle > 180 && angle < 270) { // endpoint in lower left quadrant - scaledangle = angle - 180; - offsetX = scaledangle / 18; - } - else if (angle > 270) { // endpoint in lower right quadrant - scaledangle = angle - 270; - offsetX = 5 - scaledangle / 6; - } - return offsetX + (startPoint.x + endPoint.x)/2; -} - -// calculate the Y position of the label -export function labelPositionY(startPoint, endPoint, lines=1) { - let angle = Math.angleBetween(startPoint, endPoint); - let offsetY = 0; - let scaledangle = 0; - - if (angle === 0 || angle === 180) { - offsetY = 15 - ; - } - else if (angle === 90 || angle === 270) { - offsetY = 0; - } - else if (angle > 0 && angle < 90) { // endpoint in upper right quadrant - offsetY = 15 - angle / 6; - } - else if (angle > 90 && angle < 180) { // endpoint in upper left quadrant - scaledangle = angle - 90; - offsetY = -scaledangle / 9 * lines; - } - else if (angle > 180 && angle < 270) { // endpoint in lower left quadrant - scaledangle = angle - 180; - offsetY = 15 - scaledangle / 3; - } - else if (angle > 270) { // endpoint in lower right quadrant - scaledangle = angle - 270; - offsetY = -scaledangle / 9 * lines; - } - return offsetY + (startPoint.y + endPoint.y)/2; -} \ No newline at end of file diff --git a/app/domain-story-modeler/features/modeling/DSModeling.js b/app/domain-story-modeler/features/modeling/DSModeling.js deleted file mode 100644 index a866eb55..00000000 --- a/app/domain-story-modeler/features/modeling/DSModeling.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -import Modeling from 'bpmn-js/lib/features/modeling/Modeling'; - -import { inherits } from 'util'; - -export default function DSModeling(eventBus, elementFactory, commandStack, - domainStoryRules) { - Modeling.call(this, eventBus, elementFactory, commandStack, domainStoryRules); -} - -Modeling.prototype.updateLabel = function(element, newLabel, newBounds) { - if (/^domainStory:/.test(element.type)) { - this._commandStack.execute('element.updateCustomLabel', { - element: element, - newLabel: newLabel, - newBounds: newBounds - }); - } else { - this._commandStack.execute('element.updateLabel', { - element: element, - newLabel: newLabel, - newBounds: newBounds - }); - } -}; - -Modeling.prototype.updateNumber = function(element, newNumber, newBounds) { - if (/^domainStory:/.test(element.type)) { - this._commandStack.execute('element.updateCustomLabel', { - element: element, - newNumber: newNumber, - newBounds: newBounds - }); - } else { - this._commandStack.execute('element.updateLabel', { - element: element, - newNumber: newNumber, - newBounds: newBounds - }); - } -}; - -Modeling.prototype.replaceShape = function(oldShape, newShape, hints) { - let context = { - oldShape: oldShape, - newData: newShape, - hints: hints || {} - }; - - this._commandStack.execute('shape.replace', context); - return context.newShape; -}; - -Modeling.prototype.removeGroup = function(element) { - this._commandStack.execute('shape.removeGroupWithoutChildren', { element:element }); - this.removeElements({ element }); -}; - -inherits(DSModeling, Modeling); - -DSModeling.$inject = [ - 'eventBus', - 'elementFactory', - 'commandStack', - 'domainStoryRules' -]; diff --git a/app/domain-story-modeler/features/modeling/index.js b/app/domain-story-modeler/features/modeling/index.js deleted file mode 100644 index dd853057..00000000 --- a/app/domain-story-modeler/features/modeling/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -import BehaviorModule from 'bpmn-js/lib/features/modeling/behavior'; -import OrderingModule from 'bpmn-js/lib/features/ordering'; -import ReplaceModule from 'bpmn-js/lib/features/replace'; - -import CommandModule from 'diagram-js/lib/command'; -import TooltipsModule from 'diagram-js/lib/features/tooltips'; -import LabelSupportModule from 'diagram-js/lib/features/label-support'; -import AttachSupportModule from 'diagram-js/lib/features/attach-support'; -import SelectionModule from 'diagram-js/lib/features/selection'; -import ChangeSupportModule from 'diagram-js/lib/features/change-support'; -import SpaceToolModule from 'diagram-js/lib/features/space-tool'; - -import BpmnFactory from 'bpmn-js/lib/features/modeling/BpmnFactory'; -import BpmnUpdater from 'bpmn-js/lib/features/modeling/BpmnUpdater'; -import BpmnLayouter from 'bpmn-js/lib/features/modeling/BpmnLayouter'; -import CroppingConnectionDocking from 'diagram-js/lib/layout/CroppingConnectionDocking'; - - -import DSModeling from './DSModeling'; -import DomainStoryRules from '../../language/DomainStoryRules'; -import DomainStoryElementFactory from '../../modeler/DomainStoryElementFactory'; - -export default { - __init__: [ - 'modeling', - 'bpmnUpdater' - ], - __depends__: [ - BehaviorModule, - OrderingModule, - ReplaceModule, - CommandModule, - TooltipsModule, - LabelSupportModule, - AttachSupportModule, - SelectionModule, - ChangeSupportModule, - SpaceToolModule - ], - domainStoryRules: ['type', DomainStoryRules], - bpmnFactory: [ 'type', BpmnFactory ], - bpmnUpdater: [ 'type', BpmnUpdater ], - layouter: [ 'type', BpmnLayouter ], - elementFactory: [ 'type', DomainStoryElementFactory ], - modeling: [ 'type', DSModeling ], - connectionDocking: [ 'type', CroppingConnectionDocking ] -}; diff --git a/app/domain-story-modeler/features/palette/DomainStoryPalette.js b/app/domain-story-modeler/features/palette/DomainStoryPalette.js deleted file mode 100644 index 1af4f83f..00000000 --- a/app/domain-story-modeler/features/palette/DomainStoryPalette.js +++ /dev/null @@ -1,229 +0,0 @@ -'use strict'; - -import { assign } from 'min-dash'; -import { getNameFromType } from '../../language/naming'; -import { getIconForType } from '../../language/icon/iconDictionary'; -import { getIconset } from '../../language/icon/iconConfig'; -import { GROUP, ACTOR, WORKOBJECT } from '../../language/elementTypes'; -import { appendedIconsTag } from '../iconSetCustomization/persitence'; -import { overrideAppendedIcons } from '../../language/icon/all_Icons'; -import { - initTypeDictionaries, - getTypeDictionary -} from '../../language/icon/dictionaries'; -import { domExists } from '../../language/testmode'; -import { Dict } from '../../language/classes/collection'; -import { getAppendedIconDictionary } from '../iconSetCustomization/dictionaries'; - -/** - * A palette that allows you to create BPMN _and_ custom elements. - */ - -export default function PaletteProvider( - palette, - create, - elementFactory, - spaceTool, - lassoTool -) { - this._create = create; - this._elementFactory = elementFactory; - this._spaceTool = spaceTool; - this._lassoTool = lassoTool; - - palette.registerProvider(this); -} - -PaletteProvider.$inject = [ - 'palette', - 'create', - 'elementFactory', - 'spaceTool', - 'lassoTool', - 'modeling' -]; - -PaletteProvider.prototype.getPaletteEntries = function() { - let actions = {}, - create = this._create, - elementFactory = this._elementFactory, - spaceTool = this._spaceTool, - lassoTool = this._lassoTool; - - function createAction(type, group, className, title, options) { - function createListener(event) { - let shape = elementFactory.createShape(assign({ type: type }, options)); - - assign(shape.businessObject, { - id: shape.id - }); - - if (options) { - shape.businessObject.di.isExpanded = options.isExpanded; - } - - create.start(event, shape); - } - - let shortType = type.replace(/^domainStory:/, ''); - - return { - group: group, - className: className, - title: 'Create ' + title || 'Create ' + shortType, - action: { - dragstart: createListener, - click: createListener - } - }; - } - - return initPalette(actions, spaceTool, lassoTool, createAction); -}; - -function appendCSSStyleCheat(customIcons) { - const sheetEl = document.createElement('style'); - document.head.appendChild(sheetEl); - - let customIconDict = new Dict(); - - customIconDict.appendDict(customIcons); - let customIconDictKeys = customIconDict.keysArray(); - - customIconDictKeys.forEach(name => { - if (getAppendedIconDictionary().has(name)) { - let src = customIconDict.get(name); - - const iconStyle = - '.icon-domain-story-' + - name.toLowerCase() + - '::before{' + - ' display: block;'+ - ' content: url("data:image/svg+xml;utf8,' + - wrapSRCInSVG(src) + - '");'+ - ' margin: 3px;}'; - sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length); - } - }); -} - -function initPalette(actions, spaceTool, lassoTool, createAction) { - let config = getIconset(); - - let customIcons = localStorage.getItem(appendedIconsTag); - - if (customIcons) { - customIcons = JSON.parse(customIcons); - if (customIconsLegacy(customIcons)) { - customIcons = convertLegacyAppendedIconsToDict(customIcons); - } - if (customIcons.entries && customIcons.entries.forEach) { - const customIconsDict = new Dict(); - customIcons.entries.forEach(entry => { - customIconsDict.putEntry(entry); - }); - overrideAppendedIcons(customIconsDict); - if (domExists()) { - appendCSSStyleCheat(customIcons); - } - } - } - - initTypeDictionaries(config.actors, config.workObjects); - - let actorTypes = getTypeDictionary(ACTOR); - - actorTypes.keysArray().forEach(actorType => { - addCanvasObjectTypes(actorType, createAction, actions, 'actor'); - }); - - assign(actions, { - 'actor-separator': { - group: 'actor', - separator: true - } - }); - - let workObjectTypes = getTypeDictionary(WORKOBJECT); - - workObjectTypes.keysArray().forEach(workObjectType => { - addCanvasObjectTypes(workObjectType, createAction, actions, 'actor'); // TODO is ClassName 'actor' correct? - }); - - assign(actions, { - 'workObject-separator': { - group: 'workObject', - separator: true - }, - 'domainStory-group': createAction( - GROUP, - 'group', - 'icon-domain-story-tool-group', - 'group' - ), - 'group-separator': { - group: 'group', - separator: true - }, - 'lasso-tool': { - group: 'tools', - className: 'bpmn-icon-lasso-tool', - title: 'Activate the lasso tool', - action: { - click: function(event) { - lassoTool.activateSelection(event); - } - } - }, - 'space-tool': { - group: 'tools', - className: 'bpmn-icon-space-tool', - title: 'Activate the create/remove space tool', - action: { - click: function(event) { - spaceTool.activateSelection(event); - } - } - } - }); - - return actions; -} - -function addCanvasObjectTypes(actorType, createAction, actions, className) { - let name = getNameFromType(actorType); - let icon = getIconForType(actorType); - - let action = []; - action['domainStory-' +className + name] = createAction( - actorType, - className, - icon, - name - ); - assign(actions, action); -} - -function customIconsLegacy(customIcons) { - if (Object.keys(customIcons).length === 1 && Object.keys(customIcons)[0] === 'entries') { - return false; - } - return true; -} - -function convertLegacyAppendedIconsToDict(customIcons) { - let dict = new Dict(); - Object.keys(customIcons).forEach(key => { - dict.set(key, customIcons[key]); - }); - return dict; -} - -// For some reason its important to use ' in the content for the Palette and ContextPad -// Do not change! -function wrapSRCInSVG(src) { - let svg = ""+ - ""; - return svg; -} diff --git a/app/domain-story-modeler/features/palette/index.js b/app/domain-story-modeler/features/palette/index.js deleted file mode 100644 index d718840a..00000000 --- a/app/domain-story-modeler/features/palette/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import ElementFactory from 'diagram-js/lib/core/ElementFactory'; -import DSModeling from '../modeling/DSModeling'; - -'use strict'; - -export default { - __depends__:[ - ], - __init__: [ - 'paletteProvider', - ], - elementFactoryBpmn: ['type', ElementFactory], - modeling : ['type', DSModeling] -}; \ No newline at end of file diff --git a/app/domain-story-modeler/features/replay/initializeReplay.js b/app/domain-story-modeler/features/replay/initializeReplay.js deleted file mode 100644 index 09e51fcf..00000000 --- a/app/domain-story-modeler/features/replay/initializeReplay.js +++ /dev/null @@ -1,138 +0,0 @@ -'use strict'; - -import { Dict } from '../../language/classes/collection'; -import { getAllGroups } from '../../language/canvasElementRegistry'; - -// create a trace through all activities, that recreates the path from the beginning to the end of the story -export function traceActivities(activitiesFromActors) { - const tracedActivityMap = new Dict(); - - // order the activities with numbers by their number - activitiesFromActors.forEach(element => { - let number = element.businessObject.number; - let tracedItem = tracedActivityMap.get(number - 1) || []; - tracedItem.push(element); - tracedActivityMap.set(number - 1, tracedItem); - }); - - let allSteps = []; - - // create a step for each activity with a number - for (let i = 0; i < tracedActivityMap.keysArray().length; i++) { - let traceStep = createStep(tracedActivityMap.get(i) || []); - - allSteps.push(traceStep); - } - - const groups = getAllGroups(); - addGroupSteps(groups, allSteps); - - return allSteps; -} - -// create a step for the replay function -export function createStep(tracedActivity) { - let initialSources = []; - let activities = tracedActivity; - let targetObjects = []; - - tracedActivity.forEach(parrallelStep => { - if (parrallelStep) { - initialSources.push(parrallelStep.source); - - // add the first Object to the traced targets, this can only be a workObject, since actors cannot connect to other actors - let firstTarget = parrallelStep.target; - targetObjects.push(firstTarget); - - // check the outgoing activities for each target - for (let i = 0; i < targetObjects.length; i++) { - const checkTarget = targetObjects[i]; - if ( - checkTarget.businessObject && - !checkTarget.businessObject.type.includes('actor') && - checkTarget.outgoing - ) { - - // check the target for each outgoing activity - checkTarget.outgoing.forEach(activity => { - activities.push(activity); - const activityTarget = activity.target; - if (!targetObjects.includes(activityTarget)) { - targetObjects.push(activityTarget); - } - }); - } - } - } - }); - - const tracedStep = { - sources: initialSources, - activities: activities, - targets: targetObjects - }; - return tracedStep; -} - -function addGroupSteps(groups, allSteps) { - - if (groups.length >0) { - allSteps.push({ - groups: groups, - activities: [true] - }); - } - - // const [orderedGroups, unorderedGroups] = getGroupOrder(groups, allSteps); - - // orderedGroups.forEach(group => { - // allSteps.push ( - // { - // groups: [group], - // activities: [true] - // }); - // }); - - // if (unorderedGroups.length >0) { - // allSteps.push({ - // groups: unorderedGroups, - // activities:[true] - // }); - // } -} - -// function getGroupOrder(groups, allSteps) { -// const groupOrder = []; - -// []; - -// for (let i =0; i< allSteps.length; i++) { -// const step = allSteps[i]; -// const targetIds = step.targets.map(target =>target.id); - -// groups.forEach(group => { -// const groupId = group.id; -// const childIds = group.children.map(child => child.id); - -// if (childIds.diff(targetIds).length > 0) { -// if (!groupOrder.some(id => id === groupId)) { -// groupOrder.push(groupId); -// } -// } -// }); -// } - -// const orderedGroups = []; -// groupOrder.forEach(id => { -// orderedGroups.push(groups.filter(group => group.id === id)[0]); -// }); - -// const unorderedGroups = []; -// groups.forEach(group => { -// if (!orderedGroups.includes(group)) { -// unorderedGroups.push(group); -// } -// }); - -// return [orderedGroups, unorderedGroups]; -// } \ No newline at end of file diff --git a/app/domain-story-modeler/features/replay/replay.js b/app/domain-story-modeler/features/replay/replay.js deleted file mode 100644 index f46af859..00000000 --- a/app/domain-story-modeler/features/replay/replay.js +++ /dev/null @@ -1,180 +0,0 @@ -'use strict'; - -import { GROUP } from '../../language/elementTypes'; -import { - getActivitesFromActors, - wasInitialized, -} from '../../language/canvasElementRegistry'; -import { traceActivities } from './initializeReplay'; -import { editMode, presentationMode, showCurrentStep } from './replayFunctions'; - -let canvas; -let selection; - -let replayOn = false; -let currentStep = 0; -let replaySteps = []; -let initialViewbox; - -let errorStep = 0; - -let modal = document.getElementById('modal'); -let startReplayButton = document.getElementById('buttonStartReplay'); -let nextStepButton = document.getElementById('buttonNextStep'); -let previousStepButton = document.getElementById('buttonPreviousStep'); -let stopReplayButton = document.getElementById('buttonStopReplay'); -let incompleteStoryDialog = document.getElementById('incompleteStoryInfo'); - -export function getReplayOn() { - return replayOn; -} - -export function initReplay(inCanvas, inSelection) { - canvas = inCanvas; - selection = inSelection; - - document.addEventListener('keydown', function(e) { - if (replayOn) { - if (e.keyCode == 37 || e.keyCode == 40) { - - // leftArrow or downArrow - previousStep(); - } else if (e.keyCode == 39 || e.keyCode == 38) { - - // rightArrow or UpArrow - nextStep(); - } - } - }); - - startReplayButton.addEventListener('click', function() { - if (wasInitialized()) { - initialViewbox = canvas.viewbox(); - let activities = getActivitesFromActors(); - - if (!replayOn && activities.length > 0) { - replaySteps = traceActivities(activities); - - if (isStoryConsecutivelyNumbered(replaySteps)) { - replayOn = true; - presentationMode(selection); - currentStep = 0; - showCurrentStep(currentStep, replaySteps, canvas); - } else { - let errorText = '\nThe numbers: '; - for (let i = 0; i < replaySteps.length; i++) { - if (errorStep[i]) { - errorText += i + 1 + ','; - } - } - errorText = errorText.substring(0, errorText.length - 1); - errorText += ' are missing!'; - - let oldText = incompleteStoryDialog.getElementsByTagName('text'); - if (oldText) { - for (let i = 0; i < oldText.length; i++) { - incompleteStoryDialog.removeChild(oldText[i]); - } - } - - let text = document.createElement('text'); - text.innerHTML = - ' The activities in this Domain Story are not numbered consecutively.
' + - 'Please fix the numbering in order to replay the story.
' + - errorText; - incompleteStoryDialog.appendChild(text); - incompleteStoryDialog.style.display = 'block'; - modal.style.display = 'block'; - } - } - } - }); - - nextStepButton.addEventListener('click', function() { - nextStep(); - }); - - previousStepButton.addEventListener('click', function() { - previousStep(); - }); - - stopReplayButton.addEventListener('click', function() { - if (replayOn) { - editMode(); - - // show all canvas elements - let allObjects = []; - let groupObjects = []; - let canvasObjects = canvas._rootElement.children; - let i = 0; - - for (i = 0; i < canvasObjects.length; i++) { - if (canvasObjects[i].type.includes(GROUP)) { - groupObjects.push(canvasObjects[i]); - } else { - allObjects.push(canvasObjects[i]); - } - } - - i = groupObjects.length - 1; - while (groupObjects.length >= 1) { - let currentgroup = groupObjects.pop(); - currentgroup.children.forEach(child => { - if (child.type.includes(GROUP)) { - groupObjects.push(child); - } else { - allObjects.push(child); - } - allObjects.push(currentgroup); - }); - i = groupObjects.length - 1; - } - allObjects.forEach(element => { - let domObject = document.querySelector( - '[data-element-id=' + element.id + ']' - ); - domObject.style.display = 'block'; - }); - - replayOn = false; - currentStep = 0; - canvas.viewbox(initialViewbox); - } - }); -} - -function nextStep() { - if (replayOn) { - if (currentStep < replaySteps.length - 1) { - currentStep += 1; - showCurrentStep(currentStep, replaySteps, canvas); - } - } -} - -function previousStep() { - if (replayOn) { - if (currentStep > 0) { - currentStep -= 1; - showCurrentStep(currentStep, replaySteps, canvas); - } - } -} - -export function isPlaying() { - return replayOn; -} - -export function isStoryConsecutivelyNumbered(replaySteps) { - errorStep = []; - let complete = true; - for (let i = 0; i < replaySteps.length; i++) { - if (!replaySteps[i].activities[0]) { - complete = false; - errorStep[i] = true; - } else { - errorStep[i] = false; - } - } - return complete; -} diff --git a/app/domain-story-modeler/features/replay/replayFunctions.js b/app/domain-story-modeler/features/replay/replayFunctions.js deleted file mode 100644 index 6eb61454..00000000 --- a/app/domain-story-modeler/features/replay/replayFunctions.js +++ /dev/null @@ -1,267 +0,0 @@ -import { getAllActivities, getAllCanvasObjects, getAllConnections, getAllGroups } from '../../language/canvasElementRegistry'; -import { CONNECTION, GROUP } from '../../language/elementTypes'; - -let currentReplayStepLabel = document.getElementById('replayStep'); - -export function showCurrentStep(currentStep, replaySteps, canvas) { - let stepsUntilNow = []; - let allObjects = []; - let i = 0; - - currentReplayStepLabel.innerText = - currentStep + 1 + ' / ' + replaySteps.length; - - for (i = 0; i <= currentStep; i++) { - stepsUntilNow.push(replaySteps[i]); - } - - allObjects = getAllCanvasObjects(canvas); - getAllGroups().forEach(group => { - allObjects.push(group); - }); - - let shownElements = getAllShown(stepsUntilNow); - - const notShownElements = getAllNotShown(allObjects, shownElements); - - removeHighlights(); - hightlightStep(replaySteps[currentStep]); - - // hide all elements, that are not to be shown - notShownElements.forEach(element => { - const domObject = document.querySelector( - '[data-element-id=' + element.id + ']' - ); - domObject.style.display = 'none'; - }); - - shownElements.forEach(element => { - const domObject = document.querySelector( - '[data-element-id=' + element.id + ']' - ); - domObject.style.display = 'block'; - }); -} - -function getAllShown(stepsUntilNow) { - let shownElements = []; - - // for each step until the current one, add all referenced elements to the list of shown elements - stepsUntilNow.forEach(step => { - if (step.groups && step.groups.length > 0) { - step.groups.forEach(group => { - shownElements.push(group); - }); - } else { - - // add the source of the step and their annotations to the shown elements - step.sources.forEach(source => { - - shownElements.push(source); - if (source.outgoing) { - source.outgoing.forEach(out => { - if (out.type.includes(CONNECTION)) { - shownElements.push(out, out.target); - } - }); - } - }); - - // add the target of the step and their annotations to the shown elements - step.targets.forEach(target => { - shownElements.push(target); - if (target.outgoing) { - target.outgoing.forEach(out => { - if (out.type.includes(CONNECTION)) { - shownElements.push(out, out.target); - } - }); - } - - // add each activity to the step - step.activities.forEach(activity => { - shownElements.push(activity); - }); - }); - } - }); - - return shownElements; -} - -function hightlightStep(step) { - const highlightColour = 'black'; - const numberBackgroundHighlightColour = 'orange'; - const numberHighlightColour = 'black'; - - if (!step.groups) { - - step.activities.forEach(activity => { - const activityDomObject = document.querySelector( - '[data-element-id=' + activity.id + ']' - ).getElementsByTagName('polyline')[0]; - - activityDomObject.style.stroke = highlightColour; - activityDomObject.style.strokeWidth = 4; - - const { numberBackgroundDom, numberTextDom } = getNumberDomForActivity(activityDomObject); - if (numberTextDom && numberBackgroundDom) { - numberBackgroundDom.style.fill = numberBackgroundHighlightColour; - numberTextDom.style.fill = numberHighlightColour; - } - - }); - } -} - -// get all elements, that are supposed to be hidden in the current step -function getAllNotShown(allObjects, shownElements) { - let notShownElements = []; - - // every element that is not referenced in shownElements - // and is neither a group (since they are not refeenced in allObjects), - // nor an annotation conntected to a group should be hidden - allObjects.forEach(element => { - if (!shownElements.includes(element)) { - if (element.type.includes(CONNECTION)) { - if (!element.source.type.includes(GROUP)) { - notShownElements.push(element); - } else { - shownElements.push(element.target); - } - } else { - notShownElements.push(element); - } - } - }); - return notShownElements; -} - - -// replay functions -export function presentationMode(selected) { - - removeSelectionAndEditing(selected); - - const contextPadElements = document.getElementsByClassName('djs-context-pad'); - const paletteElements = document.getElementsByClassName('djs-palette'); - - const infoContainer = document.getElementById('infoContainer'); - infoContainer.style.display = 'none'; - - const editModeButtons = document.getElementById('editModeButtons'); - editModeButtons.style.display = 'none'; - editModeButtons.style.pointerEvents = 'none'; - - const presentationModeButtons = document.getElementById( - 'presentationModeButtons' - ); - presentationModeButtons.style.display = 'block'; - presentationModeButtons.style.pointerEvents = 'all'; - - const headerAndCanvas = document.getElementsByClassName('headerAndCanvas')[0]; - headerAndCanvas.style.gridTemplateRows = '0px 50px 1px auto'; - - const headlineAndButtons = document.getElementById('headlineAndButtons'); - headlineAndButtons.style.gridTemplateColumns = 'auto 230px 3px'; - - let i = 0; - for (i = 0; i < contextPadElements.length; i++) { - contextPadElements[i].style.display = 'none'; - } - - for (i = 0; i < paletteElements.length; i++) { - paletteElements[i].style.display = 'none'; - } - - currentReplayStepLabel.style.opacity = 1; -} - -export function editMode() { - removeHighlights(); - - const contextPadElements = document.getElementsByClassName('djs-context-pad'); - const paletteElements = document.getElementsByClassName('djs-palette'); - - const infoContainer = document.getElementById('infoContainer'); - infoContainer.style.display = 'block'; - infoContainer.style.height = '75px'; - - let editModeButtons = document.getElementById('editModeButtons'); - editModeButtons.style.display = 'inherit'; - editModeButtons.style.pointerEvents = 'all'; - - let presentationModeButtons = document.getElementById( - 'presentationModeButtons' - ); - presentationModeButtons.style.display = 'none'; - presentationModeButtons.style.pointerEvents = 'none'; - - let headerAndCanvas = document.getElementsByClassName('headerAndCanvas')[0]; - headerAndCanvas.style.gridTemplateRows = '0px 125px 1px auto'; - - let headlineAndButtons = document.getElementById('headlineAndButtons'); - headlineAndButtons.style.gridTemplateColumns = 'auto 390px 3px'; - - let i = 0; - for (i = 0; i < contextPadElements.length; i++) { - contextPadElements[i].style.display = 'block'; - } - - for (i = 0; i < paletteElements.length; i++) { - paletteElements[i].style.display = 'block'; - } - currentReplayStepLabel.style.opacity = 0; -} - -function removeSelectionAndEditing(selected) { - selected.select([]); - const directEditingBoxes = document.getElementsByClassName('djs-direct-editing-parent'); - - if (directEditingBoxes.length > 0) { - const directEditing = directEditingBoxes[0]; - directEditing.parentElement.removeChild(directEditing); - } -} - -function removeHighlights() { - const numberBackgroundColour = '#42aebb'; - const numberColour = 'white'; - - const allActivities = getAllActivities(); - const allConnections = getAllConnections(); - - allActivities.forEach(activity => { - const activityDomObject = document.querySelector( - '[data-element-id=' + activity.id + ']' - ).getElementsByTagName('polyline')[0]; - - activityDomObject.style.stroke = activity.businessObject.pickedColor || 'black'; - activityDomObject.style.strokeWidth = 1.5; - - const { numberBackgroundDom, numberTextDom } = getNumberDomForActivity(activityDomObject); - if (numberBackgroundDom && numberTextDom) { - numberBackgroundDom.style.fill = numberBackgroundColour; - numberTextDom.style.fill = numberColour; - } - - }); - - allConnections.forEach(connnection => { - const connectionDomObject = document.querySelector( - '[data-element-id=' + connnection.id + ']' - ).getElementsByTagName('polyline')[0]; - - connectionDomObject.style.stroke = connnection.businessObject.pickedColor || 'black'; - connectionDomObject.style.strokeWidth = 1.5; - - }); -} - -function getNumberDomForActivity(activity) { - const numberDOMS = activity.parentElement.getElementsByClassName('djs-labelNumber'); - return { - numberBackgroundDom: numberDOMS[0], - numberTextDom: numberDOMS[1] - }; -} diff --git a/app/domain-story-modeler/language/DomainStoryRenderer.js b/app/domain-story-modeler/language/DomainStoryRenderer.js deleted file mode 100644 index daad177d..00000000 --- a/app/domain-story-modeler/language/DomainStoryRenderer.js +++ /dev/null @@ -1,753 +0,0 @@ -'use strict'; - -import inherits from 'inherits'; - -import BaseRenderer from 'diagram-js/lib/draw/BaseRenderer'; - -import Ids from 'ids'; - -import { getAnnotationBoxHeight } from '../features/labeling/DSLabelEditingPreview'; - -import { - componentsToPath, - createLine -} from 'diagram-js/lib/util/RenderUtil'; - -import { - append as svgAppend, - attr as svgAttr, - create as svgCreate, - classes as svgClasses -} from 'tiny-svg'; - -import { query as domQuery } from 'min-dom'; - -import { - isObject, - assign -} from 'min-dash'; - -import { getNumberStash } from '../features/labeling/DSLabelEditingProvider'; - -import { numberBoxDefinitions, generateAutomaticNumber, addNumberToRegistry } from '../features/numbering/numbering'; - -import { calculateTextWidth } from '../features/labeling/DSLabelUtil'; -import { ACTIVITY, ACTOR, WORKOBJECT, CONNECTION, GROUP, TEXTANNOTATION } from './elementTypes'; -import { correctElementRegitryInit } from '../language/canvasElementRegistry'; -import { makeDirty } from '../features/export/dirtyFlag'; -import { countLines, labelPosition } from '../features/labeling/position'; -import { getTypeIconSRC } from './icon/dictionaries'; - -let RENDERER_IDS = new Ids(); -let numbers = []; -const DEFAULT_COLOR = 'black'; - -/** - * a renderer that knows how to render custom elements. - */ -export default function DomainStoryRenderer(eventBus, styles, canvas, textRenderer, pathMap, commandStack) { - - BaseRenderer.call(this, eventBus, 2000); - - let rendererId = RENDERER_IDS.next(); - let markers = {}; - let computeStyle = styles.computeStyle; - - // generate the automatic Number for an activity origintaing from an actor - function generateActivityNumber(parentGfx, element, box) { - - // whenever we want to edit an activity, it gets redrawn as a new object - // and the custom information is lost, - // so we stash it before the editing occurs and set the value here - - let numberStash = getNumberStash(); - let semantic = element.businessObject; - - if (numberStash.use) { - semantic.number = numberStash.number; - } - - box.x -= 15; - renderNumber(parentGfx, '.', backgroundStyle(box), element.type); - - numbers[semantic.number] = true; - box.x += 39; - box.y -= 5; - - let newRenderedNumber = renderNumber(parentGfx, semantic.number, numberStyle(box), element.type); - addNumberToRegistry(newRenderedNumber, semantic.number); - } - - // style functions - function numberStyle(box) { - return { - box: box, - fitBox: true, - style: assign( - {}, - textRenderer.getExternalStyle(), - { - fill: 'white', - backgroundColor: 'green', - position: 'absolute' - } - ) - }; - } - - function backgroundStyle(box) { - return { - box: box, - fitBox: true, - style: assign( - {}, - textRenderer.getExternalStyle(), - { - fill: '#42aebb', - fontSize: 150, - position: 'absolute', - fontFamily: 'Courier' - } - ) - }; - } - - // render functions - // render label associated with actors and workobjects - function renderEmbeddedLabel(parentGfx, element, align, padding) { - let semantic = element.businessObject; - return renderLabel(parentGfx, semantic.name, { - box: element, - align: align, - padding: padding ? padding : 0, - style: { - fill: '#000000', - } - }, element.type); - } - - // render label associated with activities - function renderExternalLabel(parentGfx, element) { - - let semantic = element.businessObject; - let waypoints = element.waypoints; - - let lines = countLines(semantic.name); - - if (element.waypoints != null) { - let position = labelPosition(waypoints, lines); - let startPoint = element.waypoints[position.selected]; - let endPoint = element.waypoints[position.selected + 1]; - let angle = Math.angleBetween(startPoint, endPoint); - let alignment = 'left'; - let boxWidth = 500; - let xStart = position.x; - - // if the activity is horizontal, we want to center the label - if (angle === 0 || angle === 180) { - boxWidth = Math.abs(startPoint.x - endPoint.x); - alignment = 'center'; - xStart = (startPoint.x + endPoint.x)/2 - calculateTextWidth(semantic.name); - } - - let box = { - textAlign: alignment, - width: boxWidth, - height: 30, - x: xStart, - y: position.y - }; - - if (semantic.name && semantic.name.length) { - return renderLabel(parentGfx, semantic.name, { - box: box, - fitBox: true, - style: assign( - {}, - textRenderer.getExternalStyle(), - { - fill: 'black', - wordWrap: 'break-word', - overflowWrap: 'break-word', - hyphens: 'auto' - } - ) - }, element.type); - } - } - } - - // render the number associated with an activity - function renderExternalNumber(parentGfx, element) { - if (element && element.source) { - let semantic = element.businessObject; - - let box = numberBoxDefinitions(element); - - if (semantic.number == null && element.source.type && element.source.type.includes(ACTOR)) { - generateAutomaticNumber(element, commandStack); - } - - // render the bacground for the number - if (semantic.number != '' && semantic.number != null && element.source.type.includes(ACTOR)) { - generateActivityNumber(parentGfx, element, box); - } else { - semantic.number = null; - } - } - } - - // render a number on the canvas - function renderNumber(parentGfx, number, options, type) { - - if (number < 10) { - number = '0' + String(number); - } - number = String(number); - let text = textRenderer.createText(number || '', options); - let height = 0; - - svgClasses(text).add('djs-labelNumber'); - - // the coordinates of the activity label must be set directly and will not be taken from the box - if (/:activity$/.test(type)) { - text.innerHTML = manipulateInnerHTMLXLabel(text.children, options.box.x, 0); - text.innerHTML = manipulateInnerHTMLYLabel(text.children, options.box.y, 0); - } else if (/:actor/.test(type)) { - height = parentGfx.firstChild.attributes.height.nodeValue; - text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 0); - } else if (/:workObject/.test(type)) { - height = parentGfx.firstChild.attributes.height.nodeValue; - text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 26); - } - - svgAppend(parentGfx, text); - return text; - } - - // render a label on the canvas - function renderLabel(parentGfx, label, options, type) { - - let text = textRenderer.createText(label || '', options); - let height = 0; - - svgClasses(text).add('djs-label'); - - // the coordinates of the activity label must be set directly and will not be taken from the box - if (/:activity$/.test(type)) { - text.innerHTML = manipulateInnerHTMLXLabel(text.children, options.box.x, 0); - text.innerHTML = manipulateInnerHTMLYLabel(text.children, options.box.y, 0); - } else if (/:actor/.test(type)) { - height = parentGfx.firstChild.attributes.height.nodeValue; - text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 0); - } else if (/:workObject/.test(type)) { - height = parentGfx.firstChild.attributes.height.nodeValue; - text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 26); - } - - svgAppend(parentGfx, text); - return text; - } - - // determine the Y-coordinate of the label / number to be rendered - function manipulateInnerHTMLYLabel(children, y, offset) { - if (children) { - let result = ''; - for (let i = 0; i < children.length; i++) { - result += children[i].outerHTML.replace(/y="-?\d*.\d*"/, 'y="' + (Number(y) + offset + (14 * i)) + '"'); - } - - return result; - } - } - - // determine the X-coordinate of the label / number to be rendered - function manipulateInnerHTMLXLabel(children, x, offset) { - if (children) { - let result = ''; - for (let i = 0; i < children.length; i++) { - result += children[i].outerHTML.replace(/x="-?\d*.\d*"/, 'x="' + (Number(x) + offset + (14 * 1)) + '"'); - } - - return result; - } - } - - // draw functions - this.drawGroup = function(parentGfx, element) { - if (!element.businessObject.pickedColor) { - element.businessObject.pickedColor = DEFAULT_COLOR; - } - let rect = drawRect(parentGfx, element.width, element.height, 0, assign({ - fill: 'none', - stroke: element.businessObject.pickedColor, - }, element.attrs)); - - renderEmbeddedLabel(parentGfx, element, 'left-top', 8); - - return rect; - }; - - this.drawActor = function(p, element) { - let svgDynamicSizeAttributes = { - width: element.width, - height: element.height, - }, - actor; - let iconSRC = getTypeIconSRC(ACTOR, element.type); - - if (iconSRC.startsWith('data')) { - iconSRC = ''+ - ''; - } - else { - if (!element.businessObject.pickedColor) { - element.businessObject.pickedColor = DEFAULT_COLOR; - } - const match = iconSRC.match(/fill=".*?"/); - if (match && match.length > 1) { - iconSRC=iconSRC.replace(/fill=".*?"/, 'fill="'+ element.businessObject.pickedColor +'"'); - } else { - const index = iconSRC.indexOf(''; - } - else { - if (!element.businessObject.pickedColor) { - element.businessObject.pickedColor = DEFAULT_COLOR; - } - if (iconSRC.match(/fill=".*?"/).length > 1) { - iconSRC=iconSRC.replace(/fill=".*?"/, 'fill="'+ element.businessObject.pickedColor +'"'); - } else { - const index = iconSRC.indexOf(' source.y + 60) { - if ((startPoint.x > source.x + 3) && (startPoint.x < source.x + 72)) { - let lineOffset = getLineOffset(source); - if ((source.y + 75 + lineOffset) > startPoint.y) { - startPoint.y += lineOffset; - } - } - } - - // check if Endpoint can overlapp with text - if (endPoint.y > target.y +60) { - if ((endPoint.x > target.x + 3) && (endPoint.x < target.x + 72)) { - let lineOffset = getLineOffset(target); - if ((target.y + 75 + lineOffset) > endPoint.y) { - endPoint.y += lineOffset; - } - } - } - } - } - - function getLineOffset(element) { - let id = element.id; - let offset =0; - - let objects = document.getElementsByClassName('djs-element djs-shape'); - for (let i=0; i 1) { - polylines[1].setAttribute('points', polylines[0].getAttribute('points')); - } - } - } - - this.drawDSConnection = function(p, element) { - let attrs = computeStyle(attrs, { - stroke: '#000000', - strokeWidth: 1.5, - strokeLinejoin: 'round', - strokeDasharray: '5, 5', - }); - - return svgAppend(p, createLine(element.waypoints, attrs)); - }; - - this.drawAnnotation = function(parentGfx, element) { - let style = { - 'fill': 'none', - 'stroke': 'none' - }; - - let text = element.businessObject.text || ''; - if (element.businessObject.text) { - let height = getAnnotationBoxHeight(); - - if (height === 0 && element.businessObject.number) { - height = element.businessObject.number; - } - assign(element, { - height: height - }); - - // for some reason the keyword height is not exported, so we use another, which we know will be exported, - // to ensure persistent annotation heights betweens sessions - assign(element.businessObject, { - number: height - }); - } - - let textElement = drawRect(parentGfx, element.width, element.height, 0, 0, style); - let textPathData = pathMap.getScaledPath('TEXT_ANNOTATION', { - xScaleFactor: 1, - yScaleFactor: 1, - containerWidth: element.width, - containerHeight: element.height, - position: { - mx: 0.0, - my: 0.0 - } - }); - - drawPath(parentGfx, textPathData, { - stroke: 'black' - }); - - renderLabel(parentGfx, text, { - box: element, - align: 'left-top', - padding: 5, - style: { - fill: 'black' - } - }); - - return textElement; - }; - - // draw helper functions - function drawPath(parentGfx, d, attrs) { - - attrs = computeStyle(attrs, ['no-fill'], { - strokeWidth: 2, - stroke: 'black' - }); - - let path = svgCreate('path'); - svgAttr(path, { d: d }); - svgAttr(path, attrs); - - svgAppend(parentGfx, path); - - return path; - } - - function drawRect(parentGfx, width, height, r, offset, attrs) { - - if (isObject(offset)) { - attrs = offset; - offset = 0; - } - - offset = offset || 0; - attrs = computeStyle(attrs, { - stroke: 'black', - strokeWidth: 2, - fill: 'white' - }); - - let rect = svgCreate('rect'); - svgAttr(rect, { - x: offset, - y: offset, - width: width - offset * 2, - height: height - offset * 2, - rx: r, - ry: r - }); - - svgAttr(rect, attrs); - svgAppend(parentGfx, rect); - - return rect; - } - - // marker functions - function marker(type, fill, stroke) { - let id = type + '-' + fill + '-' + stroke + '-' + rendererId; - - if (!markers[id]) { - createMarker(type, fill, stroke); - } - return 'url(#' + id + ')'; - } - - function createMarker(type, fill, stroke) { - let id = type + '-' + fill + '-' + stroke + '-' + rendererId; - - if (type === 'activity') { - let sequenceflowEnd = svgCreate('path'); - svgAttr(sequenceflowEnd, { d: 'M 1 5 L 11 10 L 1 15 Z' }); - - addMarker(id, { - element: sequenceflowEnd, - ref: { x: 11, y: 10 }, - scale: 0.5, - attrs: { - fill: stroke, - stroke: stroke - } - }); - } - } - - function addMarker(id, options) { - let attrs = assign({ - fill: 'black', - strokeWidth: 1, - strokeLinecap: 'round', - strokeDasharray: 'none' - }, options.attrs); - - let ref = options.ref || { x: 0, y: 0 }; - let scale = options.scale || 1; - - // resetting stroke dash array - if (attrs.strokeDasharray === 'none') { - attrs.strokeDasharray = [10000, 1]; - } - - let marker = svgCreate('marker'); - - svgAttr(options.element, attrs); - svgAppend(marker, options.element); - svgAttr(marker, { - id: id, - viewBox: '0 0 20 20', - refX: ref.x, - refY: ref.y, - markerWidth: 20 * scale, - markerHeight: 20 * scale, - orient: 'auto' - }); - - let defs = domQuery('defs', canvas._svg); - if (!defs) { - defs = svgCreate('defs'); - svgAppend(canvas._svg, defs); - } - svgAppend(defs, marker); - markers[id] = marker; - } - - // path functions - this.getWorkObjectPath = function(shape) { - let rectangle = getRectPath(shape); - return componentsToPath(rectangle); - }; - - this.getGroupPath = function(shape) { - let rectangle = getRectPath(shape); - return componentsToPath(rectangle); - }; - - this.getActivityPath = function(connection) { - let waypoints = connection.waypoints.map(function(p) { - return p.original || p; - }); - - let activityPath = [ - ['M', waypoints[0].x, waypoints[0].y] - ]; - - waypoints.forEach(function(waypoint, index) { - if (index !== 0) { - activityPath.push(['L', waypoint.x, waypoint.y]); - } - }); - return componentsToPath(activityPath); - }; - - this.getActorPath = function(shape) { - let rectangle = getRectPath(shape); - return componentsToPath(rectangle); - }; -} - -inherits(DomainStoryRenderer, BaseRenderer); - -DomainStoryRenderer.$inject = ['eventBus', 'styles', 'canvas', 'textRenderer', 'pathMap', 'commandStack']; - -DomainStoryRenderer.prototype.canRender = function(element) { - return /^domainStory:/.test(element.type); -}; - -DomainStoryRenderer.prototype.drawShape = function(p, element) { - - // polyfill for tests - if (!String.prototype.startsWith) { - Object.defineProperty(String.prototype, 'startsWith', { - value: function(search, pos) { - pos = !pos || pos < 0 ? 0 : +pos; - return this.substring(pos, pos + search.length) === search; - } - }); - } - - let type = element.type; - element.businessObject.type = type; - - correctElementRegitryInit(); - makeDirty(); - - if (type.includes(ACTOR)) { - return this.drawActor(p, element); - } - else if (type.includes(WORKOBJECT)) { - return this.drawWorkObject(p, element); - } - else if (type.includes(TEXTANNOTATION)) { - return this.drawAnnotation(p, element); - } - else if (type.includes(GROUP)) { - return this.drawGroup(p, element); - } -}; - -DomainStoryRenderer.prototype.getShapePath = function(shape) { - let type = shape.type; - - if (type.includes(ACTOR)) { - return this.getActorPath(shape); - } - else if (type.includes(WORKOBJECT)) { - return this.getWorkObjectPath(shape); - } - else if (type.includes(GROUP)) { - return this.getGroupPath(shape); - } -}; - -DomainStoryRenderer.prototype.drawConnection = function(p, element) { - let type = element.type; - - makeDirty(); - - if (!element.businessObject.type) { - element.businessObject.type = type; - } - - if (type === ACTIVITY) { - return this.drawActivity(p, element); - } else if (type === CONNECTION) { - return this.drawDSConnection(p, element); - } -}; - -DomainStoryRenderer.prototype.getConnectionPath = function(connection) { - let type = connection.type; - - if (type === ACTIVITY || type === CONNECTION) { - return this.getActivityPath(connection); - } -}; - -// creates a SVG path that describes a rectangle which encloses the given shape. -function getRectPath(shape) { - let offset = 5; - let x = shape.x, - y = shape.y, - width = (shape.width / 2) + offset, - height = (shape.height / 2) + offset; - - let rectPath = [ - ['M', x, y], - ['l', width, 0], - ['l', width, height], - ['l', -width, height], - ['l', -width, 0], - ['z'] - ]; - return rectPath; -} \ No newline at end of file diff --git a/app/domain-story-modeler/language/canvasElementRegistry.js b/app/domain-story-modeler/language/canvasElementRegistry.js deleted file mode 100644 index 7abf6848..00000000 --- a/app/domain-story-modeler/language/canvasElementRegistry.js +++ /dev/null @@ -1,159 +0,0 @@ -import { WORKOBJECT, GROUP, ACTOR, CONNECTION, ACTIVITY } from './elementTypes'; - -'use strict'; - -let elementRegistry; -let initCorrected = false; - -export function wasInitialized() { - return initCorrected; -} - -export function initElementRegistry(registry) { - initCorrected = false; - elementRegistry = registry._elements; -} - -// since the elementRegistry from BPMN does a lazy initialize, where it only gets the desired children, once an Object has been added via import or by the user. -// once the desired children are present, we correct the referenced Object to the one we actually want. -export function correctElementRegitryInit() { - if (!initCorrected) { - if (elementRegistry.__implicitroot) { - elementRegistry = elementRegistry.__implicitroot.element.children; - initCorrected = true; - } - } -} - -export function getAllActivities() { - let activities = []; - - getAllCanvasObjects().forEach(element => { - if (element.type.includes(ACTIVITY)) { - activities.push(element); - } - }); - - return activities; -} - -export function getAllConnections() { - let connections = []; - getAllCanvasObjects().forEach(element => { - let type = element.type; - if (type == CONNECTION) { - connections.push(element); - } - }); - return connections; -} - -export function getAllActors() { - let actors = []; - getAllCanvasObjects().forEach(element => { - let type = element.type; - if (type == ACTOR) { - actors.push(element); - } - }); - return actors; -} - -export function getAllWorkObjects() { - let workObjects = []; - getAllCanvasObjects().forEach(element => { - let type = element.type; - if (type.includes(WORKOBJECT)) { - workObjects.push(element); - } - }); - return workObjects; -} - -export function getAllCanvasObjects() { - let allObjects=[]; - let groupObjects=[]; - - // check for every child of the canvas wether it is a group or not - let i=0; - for (i = 0; i < elementRegistry.length; i++) { - let type = elementRegistry[i].type; - if (type.includes(GROUP)) { - - // if it is a group, memorize this for later - groupObjects.push(elementRegistry[i]); - } - else { - allObjects.push(elementRegistry[i]); - } - } - - // for each memorized group, remove it from the group-array and check its chidren, wether they are roups or not - // if a child is a group, memorize it in the goup-array - // else add the child to the return-array - i = groupObjects.length - 1; - while (groupObjects.length >= 1) { - let currentGroup = groupObjects.pop(); - currentGroup.children.forEach(child => { - let type = child.type; - if (type.includes(GROUP)) { - groupObjects.push(child); - } - else { - allObjects.push(child); - } - }); - i = groupObjects.length - 1; - } - return allObjects; -} - -// returns all groups on the canvas and inside other groups -export function getAllGroups() { - let groupObjects=[]; - let allObjects=[]; - - // check for every child of the canvas wether it is a group or not - let i=0; - for (i = 0; i < elementRegistry.length; i++) { - let type = elementRegistry[i].type; - if (type.includes(GROUP)) { - - // if it is a group, memorize this for later - groupObjects.push(elementRegistry[i]); - } - else { - allObjects.push(elementRegistry[i]); - } - } - for (i=0; i { - if (child.type.includes(GROUP)) { - groupObjects.push(child); - } - }); - } - return groupObjects; -} - -// get a list of activities, that originate from an actor-type -export function getActivitesFromActors() { - let activiesFromActors = []; - let activities = getAllActivities(); - - activities.forEach(activity => { - if (activity.source.type.includes(ACTOR)) { - activiesFromActors.push(activity); - } - }); - return activiesFromActors; -} - -export function getElementRegistry() { - return elementRegistry; -} - -export function setElementregistry(stub) { - elementRegistry = stub; -} \ No newline at end of file diff --git a/app/domain-story-modeler/language/classes/collection.js b/app/domain-story-modeler/language/classes/collection.js deleted file mode 100644 index dd595d36..00000000 --- a/app/domain-story-modeler/language/classes/collection.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -export class Dict { - constructor() { - this.entries = []; - } - - get length() { - return this.entries.length; - } - - size() { - return this.entries.length; - } - - has(key) { - return this.entries.some(entry => entry.key === key); - } - - set(key, value) { - if (!this.has(key)) - this.entries.push( - new Entry(value, key) - ); - } - - add(value, key) { - this.set(key, value); - } - - putEntry(entry) { - if (!this.has(entry.key)) { - this.entries.push(new Entry(entry.value, entry.key)); - } - } - - keysArray() { - return this.entries.map(entry => entry.key); - } - - addEach(object) { - Object.keys(object).forEach(key => { - this.set(key, object[key]); - }); - } - - appendDict(dict) { - dict.entries.forEach(entry => this.putEntry(entry)); - } - - clear() { - this.entries = []; - } - - delete(key) { - this.entries = this.entries.filter(entry => entry.key !== key); - } - - get(key) { - const found = this.entries.filter(entry => entry.key === key); - return found[0]? found[0].value : null; - } -} - -export class Entry { - constructor(value, key) { - this.value = value; - this.key = key; - } -} \ No newline at end of file diff --git a/app/domain-story-modeler/language/elementTypes.js b/app/domain-story-modeler/language/elementTypes.js deleted file mode 100644 index f78f22e5..00000000 --- a/app/domain-story-modeler/language/elementTypes.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -export const ACTIVITY = 'domainStory:activity'; -export const CONNECTION = 'domainStory:connection'; -export const ACTOR = 'domainStory:actor'; -export const WORKOBJECT = 'domainStory:workObject'; -export const GROUP = 'domainStory:group'; -export const TEXTANNOTATION = 'domainStory:textAnnotation'; -export const DOMAINSTORY = 'domainStory:'; diff --git a/app/domain-story-modeler/language/icon/dictionaries.js b/app/domain-story-modeler/language/icon/dictionaries.js deleted file mode 100644 index c2373159..00000000 --- a/app/domain-story-modeler/language/icon/dictionaries.js +++ /dev/null @@ -1,149 +0,0 @@ -import { ACTOR, WORKOBJECT } from '../elementTypes'; -import { all_icons, appendedIcons } from './all_Icons'; -import { getNameFromType } from '../naming'; -import { registerIcon } from './iconDictionary'; -import { default_conf } from './iconConfig'; -import { Dict } from '../classes/collection'; -import { getAppendedIconDictionary } from '../../features/iconSetCustomization/dictionaries'; - -const prefix = 'icon-domain-story-'; -let actorIconDictionary = new Dict(); -let workObjectDictionary = new Dict(); - -export function allInTypeDictionary(type, elements) { - let collection; - if (type == ACTOR) { - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - collection = workObjectDictionary; - } - - let allIn = true; - if (elements) { - elements.forEach(element => { - if (!collection.has(element.type)) { - allIn = false; - } - }); - } else { - return false; - } - return allIn; -} - -export function registerIcons(type, elements) { - let collection; - if (type == ACTOR) { - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - collection = workObjectDictionary; - } - - let allTypes = new Dict(); - allTypes.addEach(all_icons); - allTypes.appendDict(appendedIcons); - - elements.forEach(element => { - if (!collection.has(element.type)) { - const name = getNameFromType(element.type); - registerTypeIcon(type, element.type, allTypes.get(name)); - registerIcon(element.type, prefix + name.toLowerCase()); - } - }); -} - -export function registerTypeIcon(type, name, src) { - if (!name.includes(type)) { - name = type + name; - } - - let collection; - if (type == ACTOR) { - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - collection = workObjectDictionary; - } - collection.set(name, src); -} - -export function isInTypeDictionary(type, name) { - let collection; - if (type == ACTOR) { - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - collection = workObjectDictionary; - } - return collection.has(name); -} - -export function initTypeDictionaries(actors, workObjetcs) { - if (!actors) { - actors = default_conf.actors; - } - if (!workObjetcs) { - workObjetcs = default_conf.workObjects; - } - - let allTypes=new Dict(); - allTypes.addEach(all_icons); - allTypes.appendDict(getAppendedIconDictionary()); - - for (let i=0; i < actors.length; i++) { - const key = ACTOR + actors[i]; - actorIconDictionary.add(allTypes.get(actors[i]), key); - } - - actorIconDictionary.keysArray().forEach(actor => { - let name = getNameFromType(actor); - registerIcon(actor, 'icon-domain-story-' + name.toLowerCase()); - }); - - for (let i=0; i < workObjetcs.length; i++) { - const key = WORKOBJECT + workObjetcs[i]; - workObjectDictionary.add(allTypes.get(workObjetcs[i]), key); - } - - workObjectDictionary.keysArray().forEach(workObject => { - let name = getNameFromType(workObject); - registerIcon(workObject, 'icon-domain-story-' + name.toLowerCase()); - }); -} - -export function getTypeDictionary(type) { - let collection; - if (type == ACTOR) { - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - collection = workObjectDictionary; - } - - return collection; -} - -export function getTypeDictionaryKeys(type) { - let collection; - if (type == ACTOR) { - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - collection = workObjectDictionary; - } - - return collection.keysArray(); -} - -export function getTypeIconSRC(type, name) { - let collection; - if (type == ACTOR) { - if (!name.startsWith(ACTOR)) { - name = ACTOR + name; - } - collection = actorIconDictionary; - } else if (type == WORKOBJECT) { - if (!name.startsWith(WORKOBJECT)) { - name = WORKOBJECT + name; - } - collection = workObjectDictionary; - } - - return collection.get(name); -} \ No newline at end of file diff --git a/app/domain-story-modeler/language/icon/iconConfig.js b/app/domain-story-modeler/language/icon/iconConfig.js deleted file mode 100644 index 2d833c98..00000000 --- a/app/domain-story-modeler/language/icon/iconConfig.js +++ /dev/null @@ -1,204 +0,0 @@ -import { - customConfigTag, - useCustomConfigTag, - customConfigNameTag, - useNecessaryConfigTag -} from '../../features/iconSetCustomization/persitence'; -import { overrideAppendedIcons, appendedIcons } from './all_Icons'; -import { getAllIconDictioary } from '../../features/iconSetCustomization/dictionaries'; -import { domExists } from '../testmode'; -import { Dict } from '../classes/collection'; - -/** - * Select the Iconset which you want to use - */ -export function getIconset() { - if (localStorage.getItem(useCustomConfigTag)) { - return createCustomConf(false); - } - if (localStorage.getItem(useNecessaryConfigTag)) { - return createCustomConf(true); - } - return default_conf; - -} - -export function appendSRCFile( - actors, - actorsDict, - workObjects, - workObjectsDict -) { - let newAppendedIcons = {}; - let allIcons = getAllIconDictioary(); - - actors.forEach(name => { - if (!allIcons.has(name)) { - newAppendedIcons[name] = actorsDict.get(name); - } - }); - - workObjects.forEach(name => { - if (!allIcons.has(name)) { - newAppendedIcons[name] = workObjectsDict.get(name); - } - }); - let appen = new Dict(); - Object.keys(newAppendedIcons).forEach(key => { - appen.set(key, newAppendedIcons[key]); - }); - - overrideAppendedIcons(appen); -} - -function createCustomConf(includeNecessary) { - if (domExists()) { - let domainName = localStorage.getItem(customConfigNameTag) || 'default'; - let domainNameInput = document.getElementById('domainNameInput'); - let currentDomainName = document.getElementById('currentDomainName'); - domainNameInput.value = domainName; - currentDomainName.innerHTML = domainName; - } - - let customConfig = localStorage.getItem(customConfigTag); - let customConfigJSON = JSON.parse(customConfig); - - let actors = customConfigJSON.actors; - let workObjects = customConfigJSON.workObjects; - - let actorDict = new Dict(); - let workObjectDict = new Dict(); - - actorDict.addEach(actors); - workObjectDict.addEach(workObjects); - - actors = actorDict.keysArray(); - workObjects = workObjectDict.keysArray(); - - if (includeNecessary) { - - default_conf.actors.forEach(actor => { - actors.push(actor); - }); - - default_conf.workObjects.forEach(workObject => { - workObjects.push(workObject); - }); - } - - appendSRCFile(actors, actorDict, workObjects, workObjectDict); - - return { - actors: actors, - workObjects: workObjects - }; -} - -/* eslint no-unused-vars: 0*/ - -/** - * All Icons as one Set - * There are more Icons than fit in the palette. - * This is just for reference - */ - -const allIcons_conf = { - actors: ['Person', 'Group', 'System', 'Pet'], - workObjects: [ - 'Place', - 'Flag', - 'World', - 'Water', - 'Store', - 'Theater', - 'Business', - 'Meeting-room', - 'Hotel', - 'Dining', - 'Courthouse', - 'Gas-station', - 'Car', - 'Bus', - 'Train', - 'Truck', - 'Taxi', - 'Bike', - 'Boat', - 'Motorcycle', - 'Plane', - 'Flight-takeoff', - 'Flight-landing', - 'Shuttle', - 'Walking', - 'Traffic', - 'Commute', - 'Document', - 'Folder', - 'Call', - 'Email', - 'Copyright', - 'Briefcase', - 'Attach', - 'Ruler', - 'Sum', - 'Conversation', - 'Update', - 'Cellphone', - 'Speaker-phone', - 'Signal', - 'Key', - 'Pencil', - 'How-To-Reg', - 'Settings', - 'Grid', - 'Label', - 'Receipt', - 'Calendar', - 'Wrench', - 'Headset', - 'Keyboard', - 'Mouse', - 'Microphone', - 'Router', - 'Scanner', - 'Printer', - 'DNS', - 'Security', - 'Cloud', - 'Desktop', - 'Tablet', - 'Assessment', - 'Dashboard', - 'Pie-chart', - 'View-List', - 'Euro', - 'Dollar', - 'Info', - 'Alarm', - 'Problem', - 'Circle-Arrows', - 'Picture-as-PDF', - 'Credit-Card', - 'Shopping', - 'Favorite', - 'Gavel', - 'Blind', - 'Hourglass', - 'Time', - 'Search', - 'Thumb-up', - 'Thumb-down', - 'Thumb-up-down', - 'Couch', - 'Education', - 'Watch' - ] -}; - -/** - * Default Iconset - */ -export const default_conf = { - actors: ['Person', 'Group', 'System'], - workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'] -}; diff --git a/app/domain-story-modeler/language/icon/iconDictionary.js b/app/domain-story-modeler/language/icon/iconDictionary.js deleted file mode 100644 index 1b2670af..00000000 --- a/app/domain-story-modeler/language/icon/iconDictionary.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -import { Dict } from '../classes/collection'; - -const icons = new Dict(); - -export function getIconDictionary() { - return icons; -} - -export function getIconDictionaryKeys() { - return icons.keysArray(); -} - -export function registerIcon(name, src) { - icons.set(name, src); -} - -export function getIconForType(type) { - return icons.get(type); -} diff --git a/app/domain-story-modeler/language/naming.js b/app/domain-story-modeler/language/naming.js deleted file mode 100644 index 0ed081c2..00000000 --- a/app/domain-story-modeler/language/naming.js +++ /dev/null @@ -1,30 +0,0 @@ - -'use strict'; - -import { ACTOR, WORKOBJECT } from './elementTypes'; - -export function getNameFromType(type) { - - // polyfill for test - if (!String.prototype.includes) { - String.prototype.includes = function(search, start) { - 'use strict'; - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } - }; - } - - if (type.includes(ACTOR)) { - return type.replace(ACTOR, ''); - } - else if (type.includes(WORKOBJECT)) { - return type.replace(WORKOBJECT, ''); - } -} \ No newline at end of file diff --git a/app/domain-story-modeler/language/testmode.js b/app/domain-story-modeler/language/testmode.js deleted file mode 100644 index 2448142c..00000000 --- a/app/domain-story-modeler/language/testmode.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -export function domExists() { - let domExists = true; - if (!document.getElementById('line')) { - domExists = false; - } - return domExists; -} \ No newline at end of file diff --git a/app/domain-story-modeler/modeler/DomainStoryIdFactory.js b/app/domain-story-modeler/modeler/DomainStoryIdFactory.js deleted file mode 100644 index dc8c4588..00000000 --- a/app/domain-story-modeler/modeler/DomainStoryIdFactory.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -let idList = []; - -export default function DomainStoryIdFactory() { -} - -DomainStoryIdFactory.prototype.getId = function(type) { - return generateId(type); -}; - -DomainStoryIdFactory.prototype.registerId = function(id) { - idList.push(id); -}; - -function generateId(type) { - - let idNumber =fourDigitsId(); - - let id = type + '_' + idSuffix(idNumber); - - while (containsId(id)) { - idNumber++; - - id = type + '_' + idSuffix(idNumber); - } - - idList.push(id); - return id; -} - -function idSuffix(idNumber) { - let id = ''; - if (idNumber > 9999) { - id = 0; - } - else if (idNumber < 10) { - id= '000' + idNumber; - } - else if (idNumber < 100) { - id = '00' + idNumber; - } - else if (idNumber < 1000) { - id = '0' + idNumber; - } - else { - id = '' + idNumber; - } - return id; -} - -function fourDigitsId() { - let idNumber = Math.floor(Math.random() * 10000); - return idNumber; -} - -export function containsId(id) { - let same = false; - idList.forEach(element => { - if (id === element) { - same = true; - } - }); - return same; -} \ No newline at end of file diff --git a/app/domain-story-modeler/modeler/DomainStoryUpdater.js b/app/domain-story-modeler/modeler/DomainStoryUpdater.js deleted file mode 100644 index 6d043ab3..00000000 --- a/app/domain-story-modeler/modeler/DomainStoryUpdater.js +++ /dev/null @@ -1,177 +0,0 @@ -'use strict'; - -import inherits from 'inherits'; - -import { - pick, - assign -} from 'min-dash'; - -import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor'; - -import { - add as collectionAdd, - remove as collectionRemove -} from 'diagram-js/lib/util/Collections'; - -import { - ifDomainStoryElement, - isInDomainStoryGroup, - isDomainStory, - isDomainStoryGroup -} from '../util/TypeCheck'; -import { reworkGroupElements } from '../util/helpers'; - -/** - * a handler responsible for updating the custom element's businessObject - * once changes on the diagram happen. - */ -export default function DomainStoryUpdater(eventBus, bpmnjs) { - - CommandInterceptor.call(this, eventBus); - - function updateCustomElement(e) { - let context = e.context, - shape = context.shape, - businessObject = shape.businessObject; - - if (!isDomainStory(shape)) { - return; - } - - let parent = shape.parent; - let customElements = bpmnjs._customElements; - - // make sure element is added / removed from bpmnjs.customElements - if (!parent) { - collectionRemove(customElements, businessObject); - } else { - collectionAdd(customElements, businessObject); - } - - // save custom element position - assign(businessObject, pick(shape, ['x', 'y'])); - - // save custom element size if resizable - if (isDomainStoryGroup(shape)) { - assign(businessObject, pick(shape, ['height', 'width'])); - - // rework the child-parent relations if a group was moved, such that all Objects that are visually in the group are also associated with it - // since we do not have access to the standard-canvas object here, we cannot use the function correctGroupChildren() from DSLabelUtil - if (parent != null) { - reworkGroupElements(parent, shape); - } - } - - if (isInDomainStoryGroup(shape)) { - assign(businessObject, { - parent: shape.parent.id - }); - } - } - - function updateCustomConnection(e) { - - let context = e.context, - connection = context.connection, - source = connection.source, - target = connection.target, - businessObject = connection.businessObject; - - if (e.newTarget) { - target = e.newTarget; - } - if (e.newSource) { - source = e.newSource; - } - - let parent = connection.parent; - let customElements = bpmnjs._customElements; - - // make sure element is added / removed from bpmnjs.customElements - if (!parent) { - collectionRemove(customElements, businessObject); - } else { - collectionAdd(customElements, businessObject); - } - - // update waypoints - assign(businessObject, { - waypoints: copyWaypoints(connection) - }); - - if (source) { - if (!businessObject.source) { - assign(businessObject, { source: source.id }); - } else { - businessObject.source = source.id; - } - } - if (target) { - if (!businessObject.target) { - assign(businessObject, { target: target.id }); - } else { - businessObject.target = target.id; - } - } - } - - function copyWaypoints(connection) { - return connection.waypoints.map(function(p) { - if (p.original) { - return { - original: { - x: p.original.x, - y: p.original.y - }, - x: p.x, - y: p.y - }; - } else { - return { - x: p.x, - y: p.y - }; - } - }); - } - - this.executed([ - 'shape.create', - 'shape.move', - 'shape.delete', - 'shape.resize', - 'shape.removeGroupWithChildren' - ], ifDomainStoryElement(updateCustomElement)); - - this.reverted([ - 'shape.create', - 'shape.move', - 'shape.delete', - 'shape.resize', - 'shape.removeGroupWithChildren' - ], ifDomainStoryElement(updateCustomElement)); - - this.executed([ - 'connection.create', - 'connection.reconnect', - 'connection.updateWaypoints', - 'connection.delete', - 'connection.layout', - 'connection.move' - ], ifDomainStoryElement(updateCustomConnection)); - - this.reverted([ - 'connection.create', - 'connection.reconnect', - 'connection.updateWaypoints', - 'connection.delete', - 'connection.layout', - 'connection.move' - ], ifDomainStoryElement(updateCustomConnection)); - -} - -inherits(DomainStoryUpdater, CommandInterceptor); - -DomainStoryUpdater.$inject = ['eventBus', 'bpmnjs']; \ No newline at end of file diff --git a/app/domain-story-modeler/modeler/UpdateHandler/DSElementHandler.js b/app/domain-story-modeler/modeler/UpdateHandler/DSElementHandler.js deleted file mode 100644 index 3196075f..00000000 --- a/app/domain-story-modeler/modeler/UpdateHandler/DSElementHandler.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -import { undoGroupRework } from '../../util/helpers'; - -export default function DSElementHandler(commandStack, eventBus, modeling) { - - commandStack.registerHandler('element.colorChange', element_colorChange); - commandStack.registerHandler('shape.removeGroupWithoutChildren', removeGroupWithoutChildren); - - function element_colorChange() { - this.preExecute = function(context) { - context.oldColor= context.businessObject.pickedColor; - }; - - this.execute = function(context) { - let semantic = context.businessObject; - let element = context.element; - - semantic.pickedColor = context.newColor; - - eventBus.fire('element.changed', { element }); - }; - - this.revert = function(context) { - let semantic = context.businessObject; - let element = context.element; - - semantic.pickedColor = context.oldColor; - - eventBus.fire('element.changed', { element }); - - }; - } - - function removeGroupWithoutChildren() { - this.preExecute = function(ctx) { - ctx.parent = ctx.element.parent; - ctx.children = ctx.element.children.slice(); - }; - - this.execute = function(ctx) { - let element = ctx.element; - ctx.children.forEach(child => { - undoGroupRework(element, child); - }); - eventBus.fire('elements.changed', { elements: ctx.children }); - eventBus.fire('shape.remove', { element }); - }; - - this.revert = function() { - }; - } -} \ No newline at end of file diff --git a/app/domain-story-modeler/modeler/UpdateHandler/DSMassRenameHandlers.js b/app/domain-story-modeler/modeler/UpdateHandler/DSMassRenameHandlers.js deleted file mode 100644 index 420c5e1b..00000000 --- a/app/domain-story-modeler/modeler/UpdateHandler/DSMassRenameHandlers.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -export default function DSMassRenameHandler(commandStack, eventBus) { - - commandStack.registerHandler('domainStoryObjects.massRename',massRename); - - function massRename(modeling) { - - this.preExecute = function(context) { - let relevantElements = context.elements; - - context.oldLabel = relevantElements[0].businessObject.name; - - relevantElements.forEach(element => { - modeling.updateLabel(element.businessObject, confirm.newValue); - }); - }; - - this.execute = function(context) { - let relevantElements = context.elements; - relevantElements.forEach(element =>{ - let semantic=element.businessObject; - semantic.name=context.newValue; - - eventBus.fire('element.changed', { element }); - }); - }; - - this.revert = function(context) { - let relevantElements = context.elements; - relevantElements.forEach(element =>{ - let semantic=element.businessObject; - semantic.name=context.oldLabel; - - eventBus.fire('element.changed', { element }); - }); - }; - } -} \ No newline at end of file diff --git a/app/domain-story-modeler/modeler/UpdateHandler/headlineAndDescriptionUpdateHandler.js b/app/domain-story-modeler/modeler/UpdateHandler/headlineAndDescriptionUpdateHandler.js deleted file mode 100644 index 3d0b27e1..00000000 --- a/app/domain-story-modeler/modeler/UpdateHandler/headlineAndDescriptionUpdateHandler.js +++ /dev/null @@ -1,48 +0,0 @@ -'user strict'; - -import { setTitleInputLast, setDescriptionInputLast } from '../../features/import/import'; -import { changeWebsiteTitle } from '../../util/helpers'; - - -const title = document.getElementById('title'), - info = document.getElementById('info'), - infoText = document.getElementById('infoText'); - -/** - * a handler that updates the text of a BPMN element. - */ -export default function headlineAndDescriptionUpdateHandler(commandStack) { - - commandStack.registerHandler('story.updateHeadlineAndDescription',handlerFunction); - - function handlerFunction() { - - this.execute = function(ctx) { - - let inputTitle = ctx.newTitle; - let inputText = ctx.newDescription; - - title.innerText = inputTitle; - info.innerText = inputText; - infoText.innerText = inputText; - - setTitleInputLast(inputTitle); - setDescriptionInputLast(inputText); - changeWebsiteTitle(inputTitle); - }; - - this.revert = function(ctx) { - - let inputTitle = ctx.oldTitle; - let inputText = ctx.oldDescription; - - title.innerText = inputTitle; - info.innerText = inputText; - infoText.innerText = inputText; - - setTitleInputLast(inputTitle); - setDescriptionInputLast(inputText); - changeWebsiteTitle(inputTitle); - }; - } -} \ No newline at end of file diff --git a/app/domain-story-modeler/modeler/index.js b/app/domain-story-modeler/modeler/index.js deleted file mode 100644 index f28bc346..00000000 --- a/app/domain-story-modeler/modeler/index.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -import DomainStoryElementFactory from './DomainStoryElementFactory'; -import DomainStoryRenderer from '../language/DomainStoryRenderer'; -import DomainStoryPalette from '../features/palette/DomainStoryPalette'; -import DomainStoryRules from '../language/DomainStoryRules'; -import DomainStoryUpdater from './DomainStoryUpdater'; -import DomainStoryContextPadProvider from '../features/context-pad/DomainStoryContextPadProvider'; -import ElementFactory from 'bpmn-js/lib/features/modeling/ElementFactory'; -import CreateModule from 'diagram-js/lib/features/create'; -import PathMap from 'bpmn-js/lib/draw/PathMap'; -import PopupMenuModule from 'bpmn-js/lib/features/popup-menu'; -import ReplaceMenuProvider from '../features/change-icon/ReplaceMenuProvider'; -import ContextPadModule from 'diagram-js/lib/features/context-pad'; -import CommandStack from '../../../node_modules/diagram-js/lib/command/CommandStack'; -import DSModeling from '../features/modeling/DSModeling'; -import DSUpdateLabelHandler from '../features/labeling/DSUpdateLabelHandler'; -import headlineAndDescriptionUpdateHandler from '../modeler/UpdateHandler/headlineAndDescriptionUpdateHandler'; - - -export default { - __depends__:[ - CreateModule, - ContextPadModule, - PopupMenuModule - ], - __init__: [ - 'domainStoryRenderer', - 'paletteProvider', - 'domainStoryRules', - 'domainStoryUpdater', - 'contextPadProvider', - 'replaceMenuProvider', - ], - elementFactory: [ 'type', DomainStoryElementFactory ], - domainStoryRenderer: [ 'type', DomainStoryRenderer ], - paletteProvider: [ 'type', DomainStoryPalette ], - domainStoryRules: [ 'type', DomainStoryRules ], - domainStoryUpdater: [ 'type', DomainStoryUpdater ], - contextPadProvider: [ 'type', DomainStoryContextPadProvider ], - elementFactoryBpmn: ['type', ElementFactory], - pathMap: [ 'type', PathMap ], - replaceMenuProvider: ['type', ReplaceMenuProvider], - commandStack: ['type', CommandStack], - dSUpdateLabelHandler: ['type', DSUpdateLabelHandler], - headlineAndDescriptionUpdateHandler: ['type', headlineAndDescriptionUpdateHandler], - modeling : ['type', DSModeling] -}; diff --git a/app/domain-story-modeler/util/ArrayExtensions.js b/app/domain-story-modeler/util/ArrayExtensions.js deleted file mode 100644 index 69f58dac..00000000 --- a/app/domain-story-modeler/util/ArrayExtensions.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -export function dummy() { -} - -Array.prototype.diff = function(arr2) { - var ret = []; - this.sort(); - arr2.sort(); - for (var i = 0; i < this.length; i += 1) { - if (arr2.indexOf(this[i]) > -1) { - ret.push(this[i]); - } - } - return ret; -}; - - -// Production steps of ECMA-262, Edition 5, 15.4.4.17 -// Reference: http://es5.github.io/#x15.4.4.17 -if (!Array.prototype.some) { - Array.prototype.some = function(fun, thisArg) { - 'use strict'; - - if (this == null) { - throw new TypeError('Array.prototype.some called on null or undefined'); - } - - if (typeof fun !== 'function') { - throw new TypeError(); - } - - var t = Object(this); - // eslint-disable-next-line no-bitwise - var len = t.length >>> 0; - - for (var i = 0; i < len; i++) { - if (i in t && fun.call(thisArg, t[i], i, t)) { - return true; - } - } - - return false; - }; -} \ No newline at end of file diff --git a/app/domain-story-modeler/util/MathExtensions.js b/app/domain-story-modeler/util/MathExtensions.js deleted file mode 100644 index ba9c2467..00000000 --- a/app/domain-story-modeler/util/MathExtensions.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -export function dummy() { -} - -// convert rad to deg -Math.degrees = function(radians) { - return radians * 180 / Math.PI; -}; - -// calculate the angle between two points in 2D -Math.angleBetween = function(startPoint, endPoint) { - let quadrant = 0; - - // determine in which quadrant we are - if (startPoint.x <= endPoint.x) { - if (startPoint.y >= endPoint.y) - quadrant = 0; // upper right quadrant - else quadrant = 3; // lower right quadrant - } - else { - if (startPoint.y >= endPoint.y) - quadrant = 1; // upper left uadrant - else quadrant = 2; // lower left quadrant - } - - let adjacenten = Math.abs(startPoint.y - endPoint.y); - let opposite = Math.abs(startPoint.x - endPoint.x); - - // since the arcus-tangens only gives values between 0 and 90, we have to adjust for the quadrant we are in - - if (quadrant === 0) { - return 90 - Math.degrees(Math.atan2(opposite, adjacenten)); - } - if (quadrant === 1) { - return 90 + Math.degrees(Math.atan2(opposite, adjacenten)); - } - if (quadrant === 2) { - return 270 - Math.degrees(Math.atan2(opposite, adjacenten)); - } - if (quadrant === 3) { - return 270 + Math.degrees(Math.atan2(opposite, adjacenten)); - } -}; diff --git a/app/domain-story-modeler/util/Sanitizer.js b/app/domain-story-modeler/util/Sanitizer.js deleted file mode 100644 index 21784472..00000000 --- a/app/domain-story-modeler/util/Sanitizer.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -// sanitize user-Input to be Desktop-Filename safe -export function sanitizeForDesktop(string) { - const map = { - '/': '', - '\\': '', - ':': '', - '*': '', - '?': '', - '"': '', - '<': '', - '>': '', - '|': '' - }; - const reg = /[/\\:*?"<>|]/ig; - return string ? string.replace(reg, (match)=>(map[match])) : ''; -} - -export function sanitizeIconName(name) { - const map = { - '/': '', - '\\': '', - ':': '', - '*': '', - '?': '', - '"': '', - '<': '', - '>': '', - '|': '', - '(': '', - ')': '', - ' ': '-' - }; - const reg = /[/\\:*?"<>|() ]/ig; - return name ? name.replace(reg, (match)=>(map[match])) : ''; -} \ No newline at end of file diff --git a/app/domain-story-modeler/util/TypeCheck.js b/app/domain-story-modeler/util/TypeCheck.js deleted file mode 100644 index c85dceb1..00000000 --- a/app/domain-story-modeler/util/TypeCheck.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -import { DOMAINSTORY } from '../language/elementTypes'; - -// type-checking functions -// check element type -export function isDomainStory(element) { - return element && /domainStory:/.test(element.type); -} - -// check if element is of type domainStory:group -export function isDomainStoryGroup(element) { - return element && /domainStory:group/.test(element.type); -} - -// check if element parent is of type domainStory:group -export function isInDomainStoryGroup(element) { - if (element.parent) { - return isDomainStoryGroup(element.parent); - } - return false; -} - -// check if element in the context of an event is a domainStory element -export function ifDomainStoryElement(fn) { - return function(event) { - let context = event.context, - element = context.shape || context.connection; - - if (isDomainStory(element)) { - fn(event); - } - }; -} - -export function isDomainStoryElement(element) { - return element.businessObject.type.includes(DOMAINSTORY); -} \ No newline at end of file diff --git a/app/domain-story.css b/app/domain-story.css deleted file mode 100644 index 24f001a9..00000000 --- a/app/domain-story.css +++ /dev/null @@ -1,819 +0,0 @@ -html, -body { - height: 100%; - width: 100%; - position: absolute; - font-family: Helvetica; - overflow: hidden; - margin: 0px; -} - -input { - margin-bottom: 20px; -} - -#modal { - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: black; - opacity: 0.17; - position: absolute; - z-index: 1; -} - -/* header and Canvas*/ - -.headerAndCanvas { - margin-top: 5px; - height: 100%; - width: 100%; - display: grid; - grid-template-rows: 1px 125px 1px auto; -} - -.header { - display: grid; - margin-left: 5px; - grid-template-rows: 50px 75px; -} - -#headlineAndButtons { - display: grid; - grid-template-columns: auto 390px 3px; -} - -#headline { - font-size: 17pt; - overflow-wrap: break-word; - word-wrap: break-word; - hyphens: auto; - -webkit-hyphenate-character: auto; /* not supported by Chrome*/ - margin-left: 0px; - margin-top: 0px; - margin-bottom: 0px; - height: 40px; - cursor: pointer; -} - -#currentDomainNameContainer { - font-size: 10pt; -} - -#headline:hover { - color: #42aebb; -} - -#headline:hover > #edit { - opacity: 100; -} - -#edit { - opacity: 0; -} - -#infoContainer { - height: 75px; -} - -#infoText { - height: 100%; - margin-bottom: 3px; - position: relative; - font-size: 10pt; - overflow-wrap: break-word; - word-wrap: break-word; - hyphens: auto; - -webkit-hyphenate-character: auto; /* not supported by Chrome*/ -} - -.infoText:hover { - cursor: default; -} - -.ButtonContainer { - margin-top: 0.2em; - position: relative; -} - -#replayStep { - padding: 1px; - opacity: 0; - margin-top: -2.05em; - margin-left: 9.5em; -} - -#line { - padding: 2px; - position: relative; - right: 0em; - left: 0em; - width: 100%; - border-bottom: solid 2px #ccc; - margin-top: -5px; -} - -#canvas, -#canvas > div { - top: 0px; - width: 100%; - height: 100%; - position: relative; -} - -/* Buttons */ - -#exportConfigurationButton { - height: 36px; - border: 1px solid transparent; -} - -#importConfigurationButton { - height: 36px; - border: 1px solid transparent; -} - -#resetIconConfigButton { - justify-self: left; - height: 30px; -} - -#uploadCutomIcon { - height: 30px; -} - -#customIconConfigSaveButton { - height: 30px; -} - -#cancelIconCustomizationButton { - height: 30px; -} - -#customIconConfigCancelButton { - margin-right: 3px; -} - -#buttonImport, -#export, -#buttonImageDownloads, -#dictionaryButton { - margin-right: -2px; - background-color: white; - border: 1px solid white; -} - -#buttonSVG, -#buttonPNG, -#buttonDownloadStory { - margin-right: -2px; - font-size: 12pt; - background-color: white; - border: 1px solid #ddd; -} - -#buttonPNG { - margin-left: 1px; -} - -#dictionaryButton { - opacity: 0.2; - pointer-events: "none"; -} - -#buttonImport:hover, -#importConfigurationButton:hover, -#exportConfigurationButton:hover, -#export:hover, -#buttonImageDownloads:hover, -#buttonSVG:hover, -#buttonPNG:hover, -#buttonDownloadStory:hover, -#buttonStartReplay:hover, -#buttonStopReplay:hover, -#buttonNextStep:hover, -#buttonPreviousStep:hover, -#brokenDSTDialogCuttonCancel:hover, -#closeNoContentOnCanvasInfo:hover, -#keyboardShortcutInfoDialogButtonCancel:hover, -#iconCustomizationButton:hover, -#downloadDialogCancelButton:hover, -#keyboardShortcutInfoButton:hover { - border: 1px solid #ccc; - cursor: pointer; -} - -#buttonStartReplay, -#buttonStopReplay, -#buttonNextStep, -#buttonPreviousStep, -#keyboardShortcutInfoButton, -#iconCustomizationButton { - background-color: white; - border: 1px solid white; - margin-right: -4px; -} - -#iconCustomizationButton { - margin-right: 0px; -} - -#closeDSTLogoInfo, -#closeWPSLogoInfo, -#closeIncompleteStoryInfo, -#closeVersionDialog, -#keyboardShortcutInfoDialogButtonCancel, -#downloadDialogCancelButton, -#brokenDSTDialogButtonCancel, -#brokenSVGDialogButtonCancel, -#closeNoContentOnCanvasInfo { - position: absolute; - font-size: 9pt; - right: 1px; - top: 1px; -} - -/* activity label input */ -#inputLabel [type="submit"], -#labelInputLabel [type="submit"] { - background-color: DodgerBlue; - color: #fff; -} - -#domainNameInput { - margin-bottom: 0px; -} - -/* keyboard shortcut dialog table */ - -#keyboardTable { - border-collapse: collapse; - table-layout: fixed; - margin-right: 3px; -} - -#keyboardTable td { - padding-right: 10px; -} - -/* Logo Container */ - -.logoContainer { - position: absolute; - bottom: 35px; - right: 5px; -} - -#imgWPS { - margin-left: 17px; -} - -#imgWPS:hover, -#imgDST:hover { - cursor: pointer; -} - -/* Info and Dialogs*/ - -#dictionaryDialog, -#numberDialog, -#brokenDSTInfo, -#brokenSVGInfo, -#labelDialog, -#wpsLogoInfo, -#dstLogoInfo, -#incompleteStoryInfo, -#versionInfo, -#keyboardShortcutInfo, -#downloadDialog, -#noContentOnCanvasInfo { - top: 40%; - left: 50%; - z-index: 2; - position: absolute; -} - -#wpsLogoInfo, -#incompleteStoryInfo, -#versionInfo, -#keyboardShortcutInfo, -#brokenDSTInfo, -#brokenSVGInfo, -#noContentOnCanvasInfo { - font-size: 11pt; - border: solid 1px #aaaaab; - padding-top: 3px; - padding-bottom: 3px; - padding-left: 10px; - padding-right: 10px; - background-color: white; - width: 350px; - margin-left: -175px; -} - -#dstLogoInfo { - font-size: 11pt; - border: solid 1px #aaaaab; - padding-top: 3px; - padding-bottom: 3px; - padding-left: 10px; - padding-right: 10px; - background-color: white; - width: 310px; - margin-left: -155px; -} - -#dialog, -#numberDialog, -#labelDialog, -#downloadDialog { - padding: 30px 30px 30px 30px; - background-color: #fafafa; - border-color: #ccc; - border-radius: 2px; - border-width: 1px; - box-shadow: 2px 2px 5px silver; -} - -#arrowDialog { - top: 50px; - left: 52px; - z-index: 2; - position: absolute; -} - -.arrow { - content: ""; - width: 0; - height: 0; - position: absolute; - border: 0.9rem solid transparent; - border-top-color: #fafafa; - border-left-color: #fafafa; - -moz-transform: scale(0.9999); - transform: rotate(45deg); - left: 6px; - bottom: 228px; -} - -#titleInput { - width: 99%; -} - -#descriptionInput { - width: 99%; -} - -/* Icon customization */ - -#allIconsListHeader { - position: relative; - left: 30px; - top: 5px; - font-size: 9pt; - margin-bottom: 10px; -} - -#iconCustomizationContainer { - top: 0; - left: 0; - width: 100%; - height: 100%; - font-size: 11pt; - background-color: white; - position: absolute; - z-index: 2; -} - -.iconConfigCustomization { - display: flex; - flex-direction: column; - padding-right: 15px; - padding-left: 15px; - height: 100%; -} - -.topButtonRow { - display: flex; - justify-content: space-between; - align-items: center; - height: 50px; - margin-top: 10px; - margin-bottom: 10px; -} - -.iconListsContainer { - display: flex; - flex-direction: row; - align-items: stretch; - height: 100%; - overflow: hidden; - padding-bottom: 15px; -} - -#allIconListContainer { - display: flex; - justify-content: flex-start; - flex-direction: column; - flex-grow: 1; - border: solid 1px #aaaaab; - margin-right: 2px; - height: 100%; -} - -.listWrapper { - overflow-y: auto; - height: 100%; -} - -.selectedIconsContainer { - display: flex; - flex-direction: column; - align-items: stretch; - flex-grow: 1; - border: solid 1px #aaaaab; - margin-right: 2px; - height: 100%; -} - -.selectedIconListHeader { - margin-left: 10px; - font-weight: bold; -} - -#selectedActorsContainer { - border-bottom: solid 1px #ccc; - overflow: hidden; - height: 50%; - display: flex; - flex-direction: column; -} - -#selectedActorsList { - /* No actual effect in the visual part of the UI but the drag'n'drop area is larger */ - min-height: 100%; - margin-top: 0px; - margin-bottom: 0px; - list-style-type: none; - padding-left: 20px; -} - -#selectedWorkObjectsContainer { - overflow: hidden; - height: 50%; - display: flex; - flex-direction: column; -} - -#selectedWorkObjectsList { - /* No actual effect in the visual part of the UI but the drag'n'drop area is larger */ - min-height: 100%; - margin-top: 0px; - margin-bottom: 0px; - list-style-type: none; - padding-left: 20px; -} - -#selectedWorkObjectsList li, -#selectedActorsList li { - padding: 3px 0px 3px 10px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - display: flex; - flex-direction: row; - align-items: center; -} - -#selectedWorkObjectsList li:hover, -#selectedActorsList li:hover { - padding-left: -10px; - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; -} - -#bottomButtonRow { - margin-top: 5px; - display: grid; - grid-template-columns: 150px auto 100px 100px 60px; -} - -/* dictionary */ - -#dictionaryDialog { - position: absolute; - border: solid 1px #aaaaab; - padding-top: 3px; - padding-bottom: 3px; - padding-left: 10px; - padding-right: 10px; - background-color: white; - top: 20%; - width: 625px; - left: 25%; -} - -#activityDictionary, -#workobjectDictionary { - position: relative; -} - -#workobjectDictionary { - margin-left: 10px; - right: 5px; -} - -#activityDictionaryContainer, -#workobjectDictionaryContainer { - width: 300px; - overflow-y: scroll; - height: 300px; - border: solid 1px #aaaaab; -} - -#workobjectDictionaryContainer { - margin-right: -50px; -} - -#dictionaryButtons { - bottom: 5px; - padding: 4px; -} - -/* autocomplete */ - -.autocomplete { - /*the container must be positioned relative:*/ - position: relative; - display: inline-block; -} - -.autocomplete-items { - position: absolute; - border: 1px solid #a9a9a9; - z-index: 99; - top: 100%; - left: 0; - text-align: left; -} - -.autocomplete-items div { - padding: 5px 10px 5px 10px; - font-size: 10pt; - cursor: pointer; - background-color: #fafafa; - border-bottom: 1px solid #d4d4d4; -} - -.autocomplete-items div:hover { - /*when hovering an item:*/ - background-color: #fafafa; -} - -.autocomplete-active { - /*when navigating through the items using the arrow keys:*/ - background-color: DodgerBlue !important; - color: #ffffff; -} - -/* BPMN elements */ - -.djs-overlay-context-pad { - width: 120px; - height: 238px; - overflow-y: auto; -} - -.djs-context-pad.open { - border: solid 1px #80808054; -} - -.djs-context-pad.open > .group { - border: solid 1px #80808054; - padding: 1px; - background-color: white; -} - -/** - * from bpmn.io - */ - -/** - * palette - */ - -.djs-palette { - position: absolute; - left: 20px; - top: 20px; - - box-sizing: border-box; - width: 32px; -} - -.djs-palette .separator { - margin: 0 2px; - padding-top: 0px; - - border: none; - border-bottom: solid 1px #ddd; - - clear: both; -} - -.djs-palette .entry:before { - vertical-align: middle; -} - -.djs-palette .djs-palette-toggle { - cursor: pointer; -} - -.djs-palette .entry, -.djs-palette .djs-palette-toggle { - color: #333; - font-size: 26px; - - text-align: center; -} - -.djs-palette .entry { - float: left; -} - -.djs-palette .entry img { - max-width: 100%; -} - -.djs-palette .djs-palette-entries:after { - content: ""; - display: table; - clear: both; -} - -.djs-palette .djs-palette-toggle:hover { - background: #666; -} - -.djs-palette .entry:hover { - fill: #42aebb; -} - -.djs-palette .highlighted-entry { - color: #42aebb !important; -} - -.djs-palette .entry, -.djs-palette .djs-palette-toggle { - width: 30px; - height: 30px; - line-height: 30px; - cursor: default; -} - -/** - * Palette open / two-column layout is controlled via - * classes on the palette. Events to hook into palette - * changed life-cycle are available in addition. - */ -.djs-palette.two-column.open { - width: 64px; -} - -.djs-palette:not(.open) .djs-palette-entries { - display: none; -} - -.djs-palette:not(.open) { - overflow: hidden; -} - -.djs-palette.open .djs-palette-toggle { - display: none; -} - -/** - * outline styles - */ - -.djs-outline { - fill: none; - visibility: hidden; -} - -.djs-element.hover .djs-outline, -.djs-element.selected .djs-outline { - visibility: visible; - shape-rendering: crispEdges; - stroke-dasharray: 3, 3; -} - -.djs-element.selected .djs-outline { - stroke: #8888ff; - stroke-width: 1px; -} - -.djs-element.hover .djs-outline { - stroke: #42aebb; -} - -.djs-element.attach-ok .djs-visual > :nth-child(1) { - stroke: #42aebb !important; -} - -/** -* Selection box style -* -*/ -.djs-lasso-overlay { - stroke: #42aebb; -} - -/** - * Resize styles - */ -.djs-resize-overlay { - stroke: #42aebb; -} - -/** - * drag styles - */ -.djs-dragger .djs-visual circle, -.djs-dragger .djs-visual path, -.djs-dragger .djs-visual polygon, -.djs-dragger .djs-visual polyline, -.djs-dragger .djs-visual rect, -.djs-dragger .djs-visual text { - fill: none !important; - stroke: #42aebb !important; -} - -/** - * snapping - */ -.djs-snap-line { - stroke: #42aebb; - stroke: rgba(255, 195, 66, 0.5); -} - -.djs-palette .entry:hover { - color: #42aebb; -} - -.djs-palette .highlighted-entry { - color: #42aebb !important; -} - -.djs-context-pad .entry:hover { - background: #42aebb; -} - -.djs-popup .djs-popup-header .entry.active { - color: #42aebb; - border: solid 1px #42aebb; - background-color: #f6f6f6; -} - -.djs-popup-body .entry { - width: auto !important; -} - -.djs-segment-dragger:hover .djs-visual, -.djs-segment-dragger.djs-dragging .djs-visual, -.djs-bendpoint:hover .djs-visual, -.djs-bendpoint.floating .djs-visual { - fill: #42aebb; - stroke-opacity: 0.5; - stroke: black; -} - -.djs-segment-dragger.djs-dragging .djs-visual, -.djs-bendpoint.djs-dragging .djs-visual { - fill: #42aebb; -} -.djs-tooltip-error > * { - color: #42aebb; - border-left: solid 5px #42aebb; -} - -.djs-search-input input:focus { - outline: none; - border-color: #52b415; -} - -.djs-search-result:hover { - background: #fdffd6; -} - -.djs-search-result-selected { - background: #42aebb; -} - -.djs-search-result-selected:hover { - background: #42aebb; -} - -.djs-search-overlay { - background: #42aebb; -} diff --git a/app/index.html b/app/index.html deleted file mode 100644 index f87cc5ad..00000000 --- a/app/index.html +++ /dev/null @@ -1,756 +0,0 @@ - - - - - - - - - - - - - - Domain Story Modeler - - - - - - - - -
-
-
-
-

- <name of this Domain Story> - -

-
-
- - - - - - - -
- -
-
-
-
-
-
- Domain: - default -
-
-
-
-
-
-
-
- -
-
- - - -
-
- - - - - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/logo/archive_dirty.png b/app/logo/archive_dirty.png deleted file mode 100644 index e0ee3d37e93a8df5a63a8c2c200dae373459e502..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&0jWtuK~z{r?U=D@ zgHRMeugNY1@)Is%=pS@UmJF`(6YOdsTZZChzae|4Y!z1_P;e^rBLs_C5=gAq-d3qE z(dW~W77sjf-!;#B^qG(wDM^7VVnDA~LoZat#b+prB3Q525QZUT#2AmqU>F9-vP>BU zD8wR_Nfbpv*;a?Ds!1HjRHY14=y*IP)9Exj!D_XltQe=$DOoHQ**WL)c{XRk+%n6u zz_x7|jYeRaCS}D*FBBZdf!%Hg%jFW%i=`t4GOYr>?| z1FT(95JgvQ+h$NBtj(adjTp6U+qT`Xwr$(^#$KKfgdFA*T!%s10bf{x6YW9-jNeuV( z)vP)et7aOWNzO0~r^HyFfYIUolWZ>eXA&6s*r+c!5DV4B`~+|0q$8skE6aK!waii+ zybxDMT-4#Kqfait$#4}jJr+ps(R!meMqL13ZDb!7s4e!dOqLfLN@FtPlg@g-*;v|& z^)Nv&UQ6vVt+t3Zu}TENd@c3DG=Epa2x2<=qSH|ZhUh>Jl8){Pl2HKRPuU;H65db5 hGyd>_-4r6J5)Wl4KLh<|bY%bl002ovPDHLkV1k4&>$3m= diff --git a/app/logo/done.png b/app/logo/done.png deleted file mode 100644 index aabc21654a8792b47500742291f37ca3dbea58b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8v!{z=NCo5DGlqN)4g#$Y)pMTu zJ!0cqaQWpFuk9CChUh(IS)o< zYWr{4DQ5i3ptaiECOE0_D2ub!P3*Ph^&0u*PsH@SmGf4CB8`I}C(|8;` m+m>5h*s7v@N|0-BHnVDXYG}vuBm05QVeoYIb6Mw<&;$V5%SXQe diff --git a/app/logo/flag.png b/app/logo/flag.png deleted file mode 100644 index 2869bc49472985f97b1626c08dc3f04c36c87a33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBB0OCjLn;{Go@-=fP!MQ+xIpoi z8pAEk?e5m50RaygI-L0bpMPBNgGsRV+_z^(CrPbX(YQ+Lg@uE>LjwaN6Uzy{{e}4_ s8uqMX%koFVdQ&MBb@0AkEB*8l(j diff --git a/app/logo/settings.png b/app/logo/settings.png deleted file mode 100644 index f2d698044cef38b73a8dace13b6482dbd886a54a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)9xvW?LI6uf58U|}PW6nAn5$v&xY(hxv8p018 zP~gUu184T*`Vk;Rgwr`3&yU$gO zQhaho#=UCm$Qp|zFiDmR`pn`}3|SN*pbt;Y3qgq=S0k{Jr|4(1sMm-XnE(LGyS~Pw So!;F50000|k0wldT1B8K8zo(01NCo5D^NehV9Ryk*{uiq5 z+_pEosO#KCrYSFMXGu?)urKPs1zu}2#^3b^9vFTp+IyrSRLbMWjtvVMTCLZqb5%Y3 zwO|47^|nR-_$4i!pWN6jWAi1~LL^XbmO&3^;>~+cA6&nZv*Kztmqqo9zyRBjS8EoE zK8$Sq5Ef(1HLEbTa&bee^baBBuuK)kz4!Pvquy>>9M5wE=rjgTS3j3^P6 "package.json" - "app/app.js" -> "app/domain-story-modeler/index.js" - "app/app.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/app.js" -> "app/domain-story-modeler/features/dictionary/DSMassRenameHandlers.js" - "app/app.js" -> "app/domain-story-modeler/features/dictionary/dictionary.js" - "app/app.js" -> "app/domain-story-modeler/features/export/dirtyFlag.js" - "app/app.js" -> "app/domain-story-modeler/features/export/dstDownload.js" - "app/app.js" -> "app/domain-story-modeler/features/export/pngDownload.js" - "app/app.js" -> "app/domain-story-modeler/features/export/svgDownload.js" - "app/app.js" -> "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" - "app/app.js" -> "app/domain-story-modeler/features/iconSetCustomization/persitence.js" - "app/app.js" -> "app/domain-story-modeler/features/import/import.js" - "app/app.js" -> "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" - "app/app.js" -> "app/domain-story-modeler/features/labeling/DSLabelUtil.js" - "app/app.js" -> "app/domain-story-modeler/features/numbering/numbering.js" - "app/app.js" -> "app/domain-story-modeler/features/replay/replay.js" - "app/app.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/app.js" -> "app/domain-story-modeler/modeler/DSActivityHandlers.js" - "app/app.js" -> "app/domain-story-modeler/util/MathExtensions.js" - "app/app.js" -> "app/domain-story-modeler/util/helpers.js" - "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js" -> "app/domain-story-modeler/features/change-icon/Replace.js" - "app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js" -> "app/domain-story-modeler/features/change-icon/ReplaceOptions.js" - "app/domain-story-modeler/features/change-icon/ReplaceOptions.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/change-icon/ReplaceOptions.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/change-icon/ReplaceOptions.js" -> "app/domain-story-modeler/language/icon/iconDictionary.js" - "app/domain-story-modeler/features/change-icon/ReplaceOptions.js" -> "app/domain-story-modeler/language/naming.js" - "app/domain-story-modeler/features/change-icon/index.js" -> "app/domain-story-modeler/features/modeling/DSModeling.js" - "app/domain-story-modeler/features/change-icon/index.js" -> "app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js" - "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" -> "app/domain-story-modeler/language/icon/iconDictionary.js" - "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" -> "app/domain-story-modeler/language/naming.js" - "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" -> "app/domain-story-modeler/features/export/dirtyFlag.js" - "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" -> "app/domain-story-modeler/features/numbering/numbering.js" - "app/domain-story-modeler/features/context-pad/index.js" -> "app/domain-story-modeler/features/modeling/DSModeling.js" - "app/domain-story-modeler/features/dictionary/dictionary.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/dictionary/dictionary.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/util/Sanitizer.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/features/iconSetCustomization/dictionaries.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/features/iconSetCustomization/persitence.js" - "app/domain-story-modeler/features/export/dstDownload.js" -> "app/domain-story-modeler/features/export/dirtyFlag.js" - "app/domain-story-modeler/features/export/pngDownload.js" -> "app/domain-story-modeler/util/Sanitizer.js" - "app/domain-story-modeler/features/export/pngDownload.js" -> "app/domain-story-modeler/features/export/createTitleAndInfo.js" - "app/domain-story-modeler/features/export/svgDownload.js" -> "app/domain-story-modeler/util/Sanitizer.js" - "app/domain-story-modeler/features/export/svgDownload.js" -> "app/domain-story-modeler/features/export/createTitleAndInfo.js" - "app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js" -> "app/domain-story-modeler/language/icon/all_Icons.js" - "app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js" -> "app/domain-story-modeler/language/testmode.js" - "app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js" -> "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" - "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" -> "app/domain-story-modeler/language/testmode.js" - "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" -> "app/domain-story-modeler/features/iconSetCustomization/dictionaries.js" - "app/domain-story-modeler/features/iconSetCustomization/dictionaries.js" -> "app/domain-story-modeler/language/icon/all_Icons.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "package.json" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/language/icon/iconConfig.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/language/testmode.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/features/export/dstDownload.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/features/iconSetCustomization/customizationDialog.js" - "app/domain-story-modeler/features/iconSetCustomization/persitence.js" -> "app/domain-story-modeler/features/iconSetCustomization/dictionaries.js" - "app/domain-story-modeler/features/import/ImportRepair.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/language/testmode.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/util/TypeCheck.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/util/helpers.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/features/dictionary/dictionary.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/features/export/dirtyFlag.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/features/iconSetCustomization/persitence.js" - "app/domain-story-modeler/features/import/import.js" -> "app/domain-story-modeler/features/import/ImportRepair.js" - "app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" -> "app/domain-story-modeler/util/TypeCheck.js" - "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" -> "app/domain-story-modeler/features/dictionary/dictionary.js" - "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" -> "app/domain-story-modeler/features/labeling/DSLabelUtil.js" - "app/domain-story-modeler/features/labeling/DSLabelUtil.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js" -> "app/domain-story-modeler/features/labeling/DSLabelUtil.js" - "app/domain-story-modeler/features/labeling/index.js" -> "app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js" - "app/domain-story-modeler/features/labeling/index.js" -> "app/domain-story-modeler/features/modeling/DSModeling.js" - "app/domain-story-modeler/features/labeling/index.js" -> "app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js" - "app/domain-story-modeler/features/labeling/index.js" -> "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" - "app/domain-story-modeler/features/labeling/position.js" -> "app/domain-story-modeler/features/labeling/DSLabelUtil.js" - "app/domain-story-modeler/features/modeling/DSModeling.js" -> "util" [color="grey" penwidth=1.0] - "app/domain-story-modeler/features/modeling/index.js" -> "app/domain-story-modeler/language/DomainStoryRules.js" - "app/domain-story-modeler/features/modeling/index.js" -> "app/domain-story-modeler/modeler/DomainStoryElementFactory.js" - "app/domain-story-modeler/features/modeling/index.js" -> "app/domain-story-modeler/features/modeling/DSModeling.js" - "app/domain-story-modeler/features/numbering/numbering.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/features/numbering/numbering.js" -> "app/domain-story-modeler/features/labeling/position.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/icon/all_Icons.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/icon/iconConfig.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/icon/iconDictionary.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/naming.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/language/testmode.js" - "app/domain-story-modeler/features/palette/DomainStoryPalette.js" -> "app/domain-story-modeler/features/iconSetCustomization/persitence.js" - "app/domain-story-modeler/features/palette/index.js" -> "app/domain-story-modeler/features/modeling/DSModeling.js" - "app/domain-story-modeler/features/replay/replay.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/features/replay/replay.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/index.js" -> "app/domain-story-modeler/features/labeling/index.js" - "app/domain-story-modeler/index.js" -> "app/domain-story-modeler/features/modeling/index.js" - "app/domain-story-modeler/index.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/index.js" -> "app/domain-story-modeler/modeler/index.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/export/dirtyFlag.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/labeling/DSLabelEditingPreview.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/labeling/DSLabelUtil.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/labeling/position.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/features/numbering/numbering.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/language/DomainStoryRenderer.js" -> "app/domain-story-modeler/language/icon/dictionaries.js" - "app/domain-story-modeler/language/DomainStoryRules.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/language/icon/dictionaries.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/language/icon/dictionaries.js" -> "app/domain-story-modeler/language/naming.js" - "app/domain-story-modeler/language/icon/dictionaries.js" -> "app/domain-story-modeler/language/icon/all_Icons.js" - "app/domain-story-modeler/language/icon/dictionaries.js" -> "app/domain-story-modeler/language/icon/iconConfig.js" - "app/domain-story-modeler/language/icon/dictionaries.js" -> "app/domain-story-modeler/language/icon/iconDictionary.js" - "app/domain-story-modeler/language/icon/iconConfig.js" -> "app/domain-story-modeler/features/iconSetCustomization/dictionaries.js" - "app/domain-story-modeler/language/icon/iconConfig.js" -> "app/domain-story-modeler/features/iconSetCustomization/persitence.js" - "app/domain-story-modeler/language/icon/iconConfig.js" -> "app/domain-story-modeler/language/testmode.js" - "app/domain-story-modeler/language/icon/iconConfig.js" -> "app/domain-story-modeler/language/icon/all_Icons.js" - "app/domain-story-modeler/language/naming.js" -> "app/domain-story-modeler/language/elementTypes.js" - "app/domain-story-modeler/modeler/DSActivityHandlers.js" -> "app/domain-story-modeler/features/canvasElements/canvasElementRegistry.js" - "app/domain-story-modeler/modeler/DSActivityHandlers.js" -> "app/domain-story-modeler/features/numbering/numbering.js" - "app/domain-story-modeler/modeler/DomainStoryElementFactory.js" -> "app/domain-story-modeler/modeler/DomainStoryIdFactory.js" - "app/domain-story-modeler/modeler/DomainStoryUpdater.js" -> "app/domain-story-modeler/util/TypeCheck.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/features/context-pad/DomainStoryContextPadProvider.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/features/labeling/DSUpdateLabelHandler.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/features/modeling/DSModeling.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/features/palette/DomainStoryPalette.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/language/DomainStoryRenderer.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/language/DomainStoryRules.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/modeler/DomainStoryElementFactory.js" - "app/domain-story-modeler/modeler/index.js" -> "app/domain-story-modeler/modeler/DomainStoryUpdater.js" - "app/domain-story-modeler/util/TypeCheck.js" -> "app/domain-story-modeler/language/elementTypes.js" -} diff --git a/dependencygraph.svg b/dependencygraph.svg deleted file mode 100644 index f7969c3711d68403d51f349171f6862337fea6eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340662 zcmeF4Yp>%2L#D;de?PV)!Nsp{(t}XcbosR`DycX^JH^t^Y_ie&5O;|=JDqF z=Go>yZ~kfX-sWF7@0R~>70R>C{qp&PLVdP*w59%S^ViKEHn%sQZcAKkUT*Fc+Jo}% zlWhwRx22wypZ}@!^83v%H^12YZu6_n=bQhrxm)V~@6De#UzE15O3#nV|9{^6ZS!xN zf8YG6P;Zqww>NjnpZ~S_p#08HpO-qH7s^+g|GD{Z<$p%^-j?#k=D(Nnv`@Wn%Sc{s zzTf<2OZ#!dpMNcXKPdk`FEe~pKL2m!|9hp(w`D%}%LwkgZuQQaR@K{`*Q0xH`}u>? z?t{`p%;k0&<*m{h{DFJ-N{NT1%&pDWn^)!EM{oN1d+F&P<&&Drw>IyWQGHN&2&Zpt z{<-}AZt3g8^6!V`f5yxw{QRF@&yYUb5&X5Z{<84>VVU)<(*MIUH^#(ItlX>3uQ%_M zRzBMNw*2;D^Ft|rRcJ3t>F4D)_{G1h!o4!;hlNT@@0Gu~Kd;q~r9RyF_Vqq_w~XYD(lAydsy}gtHZvyRZ2cD<+c0%xy+5v zqCS1FFaNpl&OH3E@br^XF2?z?j8c2(_iwR-epk4VThgijzKril*@chF|If-8zA1e@ zDSzO}k7d>9`C<7PG+^A%3-<#*I9t$Yg_U{vnqRleeEwxSC;fE$_5RS@m?`W0K`Ap% zfg^6`pUT*Mvhu32N-`rQ9uc1K)u}7^ylILQ|y1Mq*r}Y|mO!eMCV)gb$K0BP{pUOT4gY?tw zvOAGO-^B?FKWpOtm{XuC^aZA*$P?-$6mcFk_>8}d)Mfv=jZR^p>kLB|$uf8trKPecdDd)=A$JPi`R6{K=rryFPwtfQJ}ogiWa*a94C)@K=_o6c|Iq~sp+z2H4^tA-}xWdS~PDam6;S7EJ z`V21p{FB!lp!_H0kIp+(XPNzTfHby)p}rBgU6Mjag2A+H%pQ z$3NGsy&mtE9l=Q274&TC&ku`AtZkrGAjK)5(%YfIS{(aeiq7vgm3r z%1>7(f^6s$>{zTk@8$Q4j@AF1Q~&X6#Hnk{QKXj*>wHqqiu*TCy}#9qg7VpGE$7|x zzi`KO#whQVlAl$Gq#DzohmOU`5u$uhT9M|FXNc{)KV*d_2DT zQ{(RRryrF1)}Y{`OOJm}3CTKfUE>?BU~m8I2ieeXnO&=I!HZMXxB91iEnKK(s}>1?D^QmcZD8U4elkFaJflwve*zC$Uag_Ft5DaSqkd4h6`XAA zeo%3;p3x^|XJkIt+*n5i2ZI}J-8pJTV(R7@womWs&=VrnYK9e~pSgTHBhZ zph03iPb1M<%$1ZmH7ya${dPN7{NCXw$A5sI;WSVeJc~Vy+>X<6xBNCvy;b%ZnwqSp zTyKsdo3HMR^TK{rYahP0RfV#d^3hhW&?j}BF$$J<%qiEIqF~boN-$H6`r|Uj(6;kT zms4u4w)N(zfrP`lc>0X79~X4Uvj9UgwdTtj>PMxW%!Rt{9JO9u<{L9=cSX&Onz|np zWhUAmwYJLckWO)`I699mYmxNhlht13nbmv(OTRDp`rt&6l&Fv}0xS%~xm$L3pMuXD zz13E9)S0HBulDQMe}`?DPd+FvuO<=Td~%mj!n2QVn(K^HK5jBuafAW+5hH+C@DsmV=30DS&vO3rn#WPT|9QJw%t0fqcakEHy*;)cBz&*zTJ+l* z2Z`>VHV)2X!&)5tFjOC;4D%CXM=dHqp?Bk$b@MR5+II`#7)|;c{vE(`Az0}SrGSe zy7lYemlq{R>=m63NsUV(WR~T zY2jr}3tg|J1rN~m>Uv`|awRgq>zeb_jFZ%jnY25m=0Q!}4^E=Lv$xT}YaNvRajH7# zIy6~}q3kDkaeA8RKQDXc^<9iyRl*4BO0o2P~T#!9(A>9V1ZLbJ!N zPtzG*N268EZ&+`d1{Loi^*$}KArK0iJ;qY=Wht%Yb*?u}Q?8`fudYX=s2->1fY-C8 z1z*E9tv5%@W5EmVIpjUj&OK=R!B6x|>0DvGv(l%FoGpT^N5}o$JJ~%?e3)N( zr{pKyD>vQ9B-g#b)6gaBSR|({A~tQTyrv2%LMK^I4b5U$H|wz2y`kX>*+TyXMYGOQ zTglT@bgGzd+wvUs{bp2IR{|&NQDyyY9kpJgw(dMN)@WEaN6(3rWIops@Rl2EsO>7$ zb*HKA>NDS%QM+?$Zq(F$VX9_>yf<|jolp1H00mIn%DWhiaU^%5m zfVSQ|HLzt^H=`x@CdbjToqdgX(^PKuWiHfp=cx7SGT)d{yDMsL)YSc;<%gwzaFP2H z*@A}yr;L|;|jH1D_lpx*}t_1Gsh_K}5f%GfuC4eQbGRBsNE zW66zfUcY&GGRP-8R(_&7OAcLeoO-LE)Z0<t%#gFDOqt#@r_9!*qb<}zl+Pc$J^dR)be!pN3^Eb7gQA@44v5s1MOWL|q z)HbKHo>9GHkyYb+@{s5nxeV-v)5}omVb6MGl|(tc7!bF~zu)>gU!4f9qTj{2BZ6SN z?e12`?9=cC3O95jbG><5pif)R*~sW3&^RTa9&HY3jy9)#EJ+)djLN-}GC z+Oz!)uY5=N^e}RWBI^kHRDNJSHJs&XD=x&*VNj-wT8-B&6;3ccb+OVmX1jlQ_P4v)4|1-8|$dC0&Tr1 z3ZrLThINoIqB#5AT5_gjzVIqR)ag?q*Su|Qic+sE{b8eJojzjHhuEsGZH7;)gt?TjaiJY*fnLE;L8oL+(*I|M-1`leyj;#iyaI zgO1?VS`;#+eo+T}nxk+ZCPy%$&J@KOmT{2$O2)Rq0On$PTtM7 zzd4%6LZmd$0q?$$aya+pw3^p-y>S}%UGh5Qdi7lxG&6tq0$883Sw+*jucPI4Xxp5o z#oD%W$a`XZ5AFvG$2^hnN{D!RHg}C6<2d-MVgd2}CVJug&g=jGb@PA9+m!Y9g5=lD z`NkJs7w_e)n>PHGgkB$ggv)*1+x$oIL`Hvn_rkq0w)hT@-;}rA@VtJreYd^W3+t21 zgRc4>3|@Ly4b3^eD}#8~)b}*pFIGS8w%=w^e@}zIg#kaCP!Rbkdy|(mho33}*_Ivq z6pL_J7Tk+Z*`q`O>Q7~p&3{VXo{=kB82=OmR&O2|h+6Eu9bnneKC**HY$UnE}wCjuKz0B*Ww=bvO=>1DUnnwjcbnai3-M$Pfdl~4) zwQ;OG-5IY#Zf3s}x$~TFZ~3fmx42z0Kl8U*9DY@&<;M69>hF<5$rj#_2%DVW!h*e9 zux^|R4xtTN*RJa>q0*C(cUYIao1lV1j@Qw0OU*vmwbbli9M+wp5_ig@B7PHNuCp;) zUag_Ft5DaSqoU!CjSAnZv`}OkH>L87T56qnx|W*PXjpfenpdB?c}981>W%QR{k$I; ziAP$NVwRLdX!Yr#JRD=PaxIeVOP*%UH(v7mb&+o`%eM$xlg@Y?rRKkN=YxzsNpjv!xi-(aiI^t_#qsVhW?^s}X zL5S;Ck*%`Ipo<@s|u-7JNEQw+pMe8L#;SmGrLC~=9#C74C$ath zP4>4=EIwcJgY{))#Zh?);iuNrnjkCp>1&>91v!6e1Akte*y%np*NLs@^|8E45z&M6eaAuY#fc5ikZeZ6$3UcEMn%jj5g$T)SIR$n${Z&vaKD9=g^~B=U7LxEsFGO`x86O>Q?%ap z!HvEYJ$;)Ee;XE^qM>MavYUiO$RH4lZ|cc*leBCs9?(OcBVJAPH@RaIP*3!*io#w~ zz9M?PGdZP^qN`)2Db7v{$RJxP-1eh4bpC9ykwa}X!+t@6A|c%~<7YFE8FH`j7ss%US>v?Wf^A z9`-(7xc=utr8s>qKlM2oK0b@NJbI`<=iLnH?VRoWxow0cpW}yhtFf2_2)6)`OlGX!Oti^^?9sINZ8mX@F(UK zpJ$xhzupf&j<5HRpUt0}jz2!rd40Zj`~Q6O`SF?eZsgLi29VNb#{RswHfa5bL=qzzIQI~A_8!ef18t{=-jAm@%1 z=3AF|7y9w`r&pUlY~MP0R7SfjQo#4l%ZVMbMGi}-E=PdwMvR%JJ#TL-t z9QEVefKQ-^EPx(`Qveo%YIr=N&KyPh?68ib%uql~jeypIQoqi(lp+jO+_Hn9!m|1HCDQp=2WZ6BL&G}w zC|L(&f>_h01V|(wynOrUtKli3gf!vtY%JeAi>wl~Gu_-JKMVY)4dTssZLLKst9WP~ zAS);>>j0c$47OLW4Zuj{tDtwI^+mh_&$@gH($9?;>Xo)7nb6IZO{6<^rmMC_#puDC z$bn)8(lRx(+BU#W(oBW8j(OYT!kB4KI4|o!cxK%nlx0Pj4}6n9jr=X~4LWiFD=Q=I zI7rCcm%YTDcL4jMv>gneCpPwC>gbxsYi|6 z$zuy1ETv?Q)^(;SVJqYjP{+821d6fM6!6PDSVn1I2Z?^BD0$`R$D^)S8%l4#WhC9* zRzPAij`{_3+fvtID~zA$pO3vTKF4{Rq4zr6IoJ&2bM8y2bFdpgSm~GcwT9jBak3k- zuay#L*R~jlKUl9{W-*|HgQe(R(!4=kJ|$yD=s_QxY|-B>6m(_uwj51h?AGYf?m+^y zaK$OmxYa7UIrleYFMtXvK@Z?4c_nC&STV*b**?ZmC}@t{JhRtKxv7essxEC|p}2o# z*;1ES1@RHf7UxpQR#4=Gs0S8|bz5eP=ZBiQ@kVKnPqvI~8kJyt%-$_X_f?x2Z7;)K zfM-ZTcrL5h_7hn{><4rT@eGRf5v?*iB)FPa-S#Y>sl-$-neW$QFMMCDghy{-FZ6Od zuhU+bnol2z$L$5?c6@tbY6jEx!gS5Ue80`jrZV$@tIe&n|1%1lP$Gg zqxDoUuRkhUmPbwaSWCqrHS=m66&W0SZtKobTU#V%)b2W39^0`Qt@m$}D3jv&Hpvuf z{9J63sX5NuB)u0|Pv0h)nsZ+go|8?|i)GX{i8Nv24Xs7OXW*4+U@+J_o#BM$9QjZ3 zdthBq3nWI529wn;9%pb-x0S<^!Dlb|NCZRrKP4r@7zId+g~IIw>;l?g2GK5Mh)W~o ztncHWu4RdEnf`>_Af#prMpM^!6CBY|1ctVyx!M{5A;HU#p1Ms2UA7J--~qB9+Yft% z*^^)8*o51fS{W|y!L?L$T5$FU5CF`@G;XK9fsM;$Ob*3n_T!>K% z{{z*72TLi^l{M44&NRg{9o8{NLA2nTw0-w8v?1mwU|qkpDN0^BM&MEBT}7N8dqE?} zl#HbNwiT4gfu_Jt;0zus*JiOHcG_djTA#6v%-c0gB|<1)m9luoUE1F?Msq zPB#O{R9EBzeOs@nyG4)*kAH0`P}jDCB%iR+`XF@a_qrE??V%D_E5bSF87UKr7%Ms^ zC0)XALtNq=1^B@(!79?O!uGRLNYr#6S^6AH zkN5Z9d{tgjdRb1_53k>ReOhiS{G((c@me=;)bT3s813^?hVRCHUTlEnIZM5m@o{zj z!_2*pyyNx(d^m=EaG2Rn+Y)Q`%%O6lKw&Hj+15f~Sr~esw@(A{mEAL}H%9|0di_yP zmb|??b%bL`%^L7JY8}I9>&{WL9#7qv5Ap@MVGE?@(mHCrGHu;?YWDcoqoOVz6Z4th zW6VQpwocYjEfZwjwRPvH*;=7)%qZ_uG>ox5oMp!D77I7dCF?lPe!ZR*(aIm&Vp)S5 z=WD?n29f8j9rhOMT)#4MiuTT7IMkQW=U^Mj3PS65YyoT*YH%lnbBw-;Wzv?A4`25c zKog{!tPa`$(?P3j&G>UHD?I#^A^*r3T#N$Lz_Q3M={oa9ks6igy`<~fyVDpUJh6<9 z5#i(EH)!$!)uZ8t090%|a|*5?HT>2s9LsG-6bP9pyu{u!7o{&azC?fc@Zpdo4_{RR`GWmwFPLHzs*@$hWkhS> z8S)Ii+lDt+@m+>~2KTkDaEvu0zUEbf??^`5&5D6xfqU(yddYl0JuC0~Vh6q`HXv_? z^TzJ|^6zq+uIEQPRhw>nrhWM^ZowVvRo&&%aC~ml_S#gv!$f|_v<*!?YrVSX-lyqa zSVn$hA14qG-4u=UYl+d;17U47)YciT*3@jBt)tfVS6g?Enr#{C#(Y{E3Tkj-Ej6#q zu+=gmpHgG6UP2>!`K;)z+P(X6uZ78Z*lKl>L@@k!cz0cel>STVX8q zeHd0mBSJ6WTpuf*G>#INV2h2(p7cchY~3GQ1e7CZ06o(-2cOd$a?24J-HdU+++B1%kcRjI)}33xM&MK3 zU2v8WvI>1vE%O_Q%Z#M8q5;bqkk*Rr!ie!tdPZ0)SSa*`Jw-N>r6Vme4zcGCuR(3CA;tq=pn-JQTF&^eY-V1RAa29hvaLhw)WI5pi*Ug9 z8gr*V?BGkxTr)q|m8=*1ux-kEStr2~ay(4(h8tPFcMk_yi73H}v)05fr~AmV@pyL7 z)ASSiZdKwA9AI4jlTE1`nWr0zi39si9p3jd*hzAO@{M4 zRK$o(-q4!S=Y%f2zB^7MLfqMwj5g$T)SITUr$bVaO9J*wmdFPe_MdKxj?pC5kTAn~<1}Yq^y*F1 zytedL&ms2GaPFpMOx@kyz&|M*=R`Uh#5u4HbWCewc<#^H%9uvLB^HEiy>p1&OwYA1 zrOv@R07vl~;o-NIZtEbw%!L+YT^c>VXC08$6>ZE}2*Q3cR(&6xG2qvb)+G-%-fBGE zZW*1I^Gs$_j_>fY5||D4A@S&)dDyZ*H zM6z6a!j_hJj;vy(DWMkF1>XIZ9KL}+)ko&}vFw5;C4cSf66ttS)|8v|`nJJ;fAi@V z+t+)^g@gL%Vlg}~H(nl>Pl=W+w;itkovwY%w2$25_QkPY@Y=`Rrfm?uVQk&5IGl~* z$S@IRAtD|QER;S)Xy{i=a-C_4GYRT`s1vV4NjBI=9~AUOX~~Q&*O{hBdi3gyQS6(D zI+9{oFY+Uqf=>%%TTTg%wsoc{Lcd`h(9a`~bkf-HM42LApgFpfl6hU%=~Gx!kURQ8 zmNK?>wPU6=C8PDeEe`gGY)bfZOq*lUWFM%x#BS-yzEg~R?1LYD33)!Y4Za6! z!&ok$M}7N-JTPnPlt9~-_lwW-t@|Z$4^FxK$hKLClZ1_+xCee_(XnlidGt&?#ZeDX zGb1YY1Ld$Zq|Xw0rZ?gcx~)%nTC-G8RD?N8V#)7A-?H{VCG=rzC-(H^SqSvsm`M9&iJxR{L^} z8%vl&yLwK2TpQQ?kM$PUx>>Bz@$2~?N}C7YghSE`!8vPX%7YrCDpE&jA)_$Tb(c^% zbz^n$Gi7SlzR^`PRk@YcB-c{qhmsyVtUFD`9})e^_v9JXclqmVDZE0+m|Qn=vZdB* zw2qoHo`(HOMtaQoMmj6lQfqFkqq1T#-?r`)738k#PVJnUS9w2Y-Lya0gU)!Lb=MpQRC-KhF3aDq^my741?}H_1Z}$0zwqHjwvNh0)W8h~;cIlP{ zD9V{1%XE@YM){cbGvhY~e{|cPQ;eRCR8hO+D`AHWqZmRlMKNSG=*1-0BaVSKs%V4q zey}#|opvUaMvUJCt_Y2>gP?zo+I#wXwsGlLRwU1Gtt z|3%qgc+kQRLwzhVMt}rU4M$6u2S|+GtgIW^K#`Y2bc9jEhm5|LaqENCgg^W*?FwI( zRs?>+X?WwfS7=a*5b?qeC8U+O1;;>?TQ=T9=J&DelxO9p{?lzd!D7B?S9gi9xSsnqXtx+$h1V`IC zQxstvXjYHFo-rs{yJzJj!O*1ZnJ%N$yv}vTDC8|=?jY;Drm?G7xtM9*Zy8H>w;b?J zg5LFQ3b-Jte{9QP>@=UR)i9jVIMOY#8MIQhm+Ta6hBfm(UyFg0${BH9xHNvwJepM8 zjX=+J&do4FfbP%P&-Q{e|NJ>860KJrcl2}gXV()ppwDAxfGz08=-HGYQwhC||Iy8j zP{b;-*9WZ`{6iD4KihXQKrC*yqkC(98Xevo`onKW&I=l%;|IutKsj<^R1%IcE=tOV zAYMXUMK{pS?JZ}-YF%y12C^r}{u|n6T(Vzio0hab@QJ$e%oCF_)*@S(3#~~?YW94h zHn>e8US8r$V62~bXo~@x4j!=!uxZ&ZUVZBx+Kb37a_ne>5}W|*2C_O7RhsJ~OS)rO z4KGSA)AuC<>R!olyHm27;tJr&(-uLleOOz7 zvjEnIcSPD0$UjcQ&er|1VZC{p^fIuCQ|10tPnw)*x+g0?3E8Q6ocM$!O&H5^8rtYs zy=fXa>#@{xki;5*wMhaoNavWAw|p{+MflhkJ2+d1St z(aznpjH$a@5B<0U`%?Cmbk$?s#2%je^R*iCTzbg8#8Nny?=GL4YhOy8PdouFNBU;A z4)V=ukTW!SbaOOyG*V{~p>5g6t~?)N3TRj8+(LXl4;ulEOS)O~EzJ%69NYl0c;%MU zsurL~E)X5Cjey=JzdiN%jb3;i%FzfkKw6VeUv#|rz7c}7lg@|*(Z&??0+XZznz~xD zN1y&=Bgp5E=7>hF|1Ikj4S~OHQ~@-Kx3$Q{f-`uy%}=5i^eOv>*5SWn4wAC;2p8ZR zF%IU6e0BeN?F#!MBkQHa6j&oT=C~Mo2|QFhK>7u`zjrF@B&*6dqxlU>&O62>*imu& zdf0yE_F-%TZaHwX;iodfWtmL)0*)IaXvf$`%yGT`Fquj1sHU~{Vd=PQ#LLUymYv{x zM7m}4P5GTa_sbvJ=KE{8i}GDrElPa7wcqZS-=RL(e)eVAW%9$I2?^`)FW{-^eU9}i zZ+~5W{BtlARA|eS-{#LjpzvGhb4~;(wB~b8U9Wuq^ZHhR$BES7thyb~cj@QmTU&no zb7|DW@; zwi0_3%CU6m_B5W0Cf$yEUQa&F8^rBA`iOq|Ixst0IuhrabH|?6%MsR{(4^!=M|V?s zG+9spEl;^5`W!k|IQknacWL?N@~nbApq1nax{~vjf`i5<s zT?>CJcS?UK|34~H{7(7%r2Kta{yrz)7ziW%LOEvEYwi{_8K+|F=Ir0P?h-1R zNv~h(=ImcumW}Q>Tua5av@SNRJ4L1K@w#)=toy)?JR@wk+;YvUHPm($>bi4OEWzM& zTUT<#tAI5cW5%Wzx`CN`$7@%rzZpm?*tR@J&8tt{JR_pDc~s*&He>Pb`X(B+^dD=S za0dB`6gaNNIgJ_TqJOT%(Ruw8uNP>0Y8fAEXWEx@r?0`vABhJOUDUd)--IGB9PcE! zjHl2ZL9|@-Eij7A1AfOt7WH+~@gsvZvm^zXbDrd@ha$$7D^&3K2(< z8pvNJ7~=CG^E`H+O&^2DYz@t9|M?!fkAK?gSiY)hGg?D! zSD~&uN0n94@0Yk|*cgtJddx$rB(hdv9o5+_{kn71y!!N8%kpgLwcN;iGNbnH76`Ff zS(=<}TOshy-m2qTAsE1W0I{`f(tRSygnJ8%dSXK0(87X#%mmHZX%YnFR*k#}wW4Xjk4LAaiZ9B;_ zWSu~IaZGZR_wU6~#bK01LkZ=|$aCdgL>=~sR%NP>EHw_J>;JIT>Yo%X|I4D$lQ-~1 z@l+$Bo^8L$i|=o~D&t+M-5>i~yw;4rk5=RQ{9(SEYt4wKHTd}zJCx?mu9n8(J#FtY zncQPEa+7qgCNS6a=4n}11aqZ%sb1E}pa~iKH0kSWX`EysFmtH;o2D80saMZInQ@@N zkS|MVEw6LEDVn@Ou@1SOvnaf_SSFtPkQRJdLjys_+MK4v+O~7Zd!n7YX&F&>*TeC~ zY5&)HI4?59=f}!Ena6>1(Z1JU;}U(lCylQE_UD>e_GQ*NXxN-@X{muS(y+PfLk1ye zh}VpmuCYevR+(%d3tBMcgUr7vgD(g&@nT}~)kJ-%W(ZHiW zWnxQHQ%sZ?q-#m%#^+APh;By`g|vPR9-z6a1i8{k4syY*FH(Y$(R0S8%gBY!9Er7( zkBNvxNNHq3@Lebi=g8m@SJAw~ZjsDV8!iFgd%a}7A6m=)cI#L7_uehltI6sbdJYch zH4lvHjku3WW16%^zkkp8^cbgg=iaOir!C9AHx9B>rM>EX#@e538hhWdMd3}c|X(~z@Ua%3sA^`>dDw!Ckc=aBbVJ9pDEGVWhnMmspZw%j}U=cga{W-+f3BUy)X z;0bkI54ht((9bo zIo8*-_BdW^$t}Ex#RhO5%(7c}ob1r(r2QbXL4~_zmB*=^^!(yMU3Z=;yIALVSl1RW zr(F7)M@7q-DlKqVsDIqDO z8A3Uhk9G_(j-z>w^*)Z>)(LyxSZ&%6x$hP1{=UQ#^}l4quQ%_Mo$%4-x0_#=TS_m> z|6`-+<2$8?_nDC%&kByRhAoD^Q`SEIv?XqDe%yZh9&K{_MxK@2#_iI!#;9CJN@08A z;nN@Gn8zJyb~?U5--4A#lJml6@va@&JE3h!(_=3R(~#84zLnOrET4d0h%7lx#x6;VBqE3)Tbo zN2Oh6-ftNnEd8Qc^+(2Q9Po&Jq7t-*F3uWBLq>n5M64><3MZL&#;MEDQ{e-93C@|T z@-IkIgk+XH)h-5c;WD-bCB#+ss7?ZW7h1!6m6+-!^S!618iO8`Q~b1G2X})5gE;5U zOIGu%^jVw#^i9DPFz1KuOLkWU&+eDspOxI_dj)I0*ycR@j^#AfR(BeS^EZMwXi+&U^yi?+SZw( z$YL0dz@Bs{*bXu3ptLhxMnS{vw>CzRk3HA%sN25R@`%n~BK&G;G zoV{cDPVv++t=8*U&-Ce7mKCNvF}q(WA(f=ou2PHX>^#E z_@-w#E{&#Vwnj?LwX`J4u>P$-PPXwmqY3X%^(jRAe1oQyUelDmEX4aIEwhzgnNmxy zrIaka>N;bTS`NsT=t-|U(^?XZQ!+>EI@1*SOj_wh9ck~a^vaZ4dM%}78CBOAqtw!i zIv#c2Rb=kEAb`^Xr28PN&z z13#fz(Tx z>tR1J|F@MlOKgc=%;?6J$gj`6tz9>MLdfnSRzEETPbt$3?+(}-ue{V=H+kyFdn7Vp zEm+xLlFC>X^3V8P8-5o869a~xqwxHeqwxHWSH&@SmnJGtmN~vTBtDjpC8KN|vH-~M zu|!5Ej}p|uJCrf|GVB)kAr6xdXxYn(aM!|_`>ZLMXQs>YgX`j`c7=1Qyee9e>Gm_n z&&Og3Yhr(1i$mm4^`bMUjPE_PJOy6&ZMW0+1xeE-hZgkn>E(2TpneAdAB1jEse}-j zf0e_pJSlnoRRVkk<*_Khjkq0x-#a5Vzo{&;gW5!FR06bC1`i`34@;hU@~0Rh){XL} zxM{)|HHXOX0p&A-Tn1*7(FEcmV};p~HO0zA-V_{@lylw`QdT8&tB&>2x|pjfsWzs1 z$$UQyat{$Pyyp+LSvmG3-7696$3>UADqLCiRv3{!JQ#I;=^=eeyU(VNK4YFE&20a^ zqus|p?J1gG$wTH!ficQ#;bvo?mhz>>sQ4W8YD%x}5-J&w<8>K_smg!}AB5g>3967a z{L6LSDJsa2y(o3dbJW^vt=CRGs`^FSmRIYj*b%{vw(c}lw@=4LB|9Og^^96-&8sz3 zOG>X%U3ZR(trM$X&nWL$c3sVlOwCBWZ%>q7=VXnTAt(J<`B>AqasFPY>(hnbUdr0W z09S`n*3|JEeAgGPK7FqDwSjZ6MRbFLd)fB9=nVlfgSe-NJpc})_1k;oI~G_Y@(v;6 z@H9AwOCBMR6l(>465a_~us?(R-oQ~x=*|KC%AUctkv*d~z1k9tPyK?jyRwcX z-jq|utq;9O1^ERu`VJ zntGv4+7~6*4rY>wI%c1J z1Ui@E7dwrejkhma5RdIsmB)ay8o73~Y2C%A5*yPIKK3+v1KMMps3^gSq78W=XhEy! zK6EN_A0DUu2<#2;gn8)H3SZ&|skIks)+f%d`H4&NMbs<*ym;?lmHU-?g{1zrYj%+T zNGEz+NPYSW{nPvt^EpZ-8pKu(a9XiGpc<9P$}*CuA#PTRM(xO>KjG-{bKuP-w(1bwQy9nTlYlN`OtqOLSV$(nQh?Ie5)SV4@E8ffMogGR~g8pO>m?ORvT zRAli6PuT}>QaqK8gl%d`X}QUs6Hm3S>?qqo;xa2niK#v^&yQsXJu9zNJl)!ZkIGz^ z#Z}?R5OZw{9m3-~#IoVI`-nAe(=dl)*fhhDPFpU$@`tiiKn3F%-#QxJO)QmhDmyvH zqUyR!sG+&{>SnDUFGNOHd4PNZ^~PFY?>cIY+il$`s$SO1{l<*&lhk;fd9{vOuR>dQ zo|yXVg;bjGwhsaMZjS)}5y2)n~pjqju-i+^DG;Tla6N=pMoGEtMfw z+*l^NTP8zpF0nuKQfHlGWb5P*vhWbu>c`2y9P+m>v(L%Oa4bYt1}_$68^du7Yz!<0 zq?NR9+ZcXzA1eZ+!y=HjIcH;FAKK0%9W(fwS*UQ3S?F3C2tt8I3O^stG^X0oZ5G)>PIk zHiTAO`Ul=)*$zbGWJhYnh{PaA*-I`VKb~TAbA4p4AI82|k4;3PxQp{snb|Vyqv!8A zr0wzcbLykqm}SEJ_HUO=&mzA#)UL?1wK6Py7+Zx?5grjD#i3!}E$3mJdaF=*iQ1ZO zU3Uo;{Zu&EtD8MRKB3A4q~A{}a z>wjCXMT&E@RN6TlLT{c%>gdtYllCpy>35%&STwy`6Q^a-oc}uXb%N8ke2k`evXu=~ zzbk|+=I#=Dt7T^W?hqD^JZnT)WWBT{@N=OnJFl|tBje*`SP$4#;)o*)a0H#kuLcpj z8J55zvy|+&!AeCN)4gQAAIpA-s3vFrQHe@@zWHkNWyxXF4Ss#P)OKKg$BkSJ(R|H} z`Y17GIcRprupQRSVcLEeUrnr_Uv7R;zPYWBio51#5fSwpq`tR`wnuJypW<)c7FOjt za};}L+B%$Fw6DWaChp~~#o^^0Eav}P1N^rET zGfk0yqgO}XCMckvM@?&{Ncya$WM0>;^(pAqdF7~MUtqo3F;nV<)tb?CcP*cNBFiXi z`FtwNlYIr{SU0xD&-0DG&v_i?>AanUSfbDOWZsQFej0t8}-WH-dY6vSn)aAO|SH&l9kt}{om#y_lMD}kH5f%o)dinCm0+bpGIJEgAEryz;4 zEkGTO8cMccpoj;{DZ$aU&J=~LT6jIIgA6q#j~baM3eq;ubSWjp`_Jx|@4y9zxoJqA>4Wlz7ZG*x_>|Z+^VKT?j#Iz|%b#Og zFmHG2Pt(phtkeiOw7<9VhISEI0{DAhls$H*?4!rqpI&YLPpGE^Q&jEK}v>mt0iqU?-NFBpc(BMTI<3>*|-RA;xac7&#I2hEIy#i7e0? zxJ$kfmH;h*&XP=&P()iR!28 z#D}In6e+?Uy~H~zNN6~MwXOZe4uPxih22CBf_O$YnR&)Kz(exPXhZ92>rgpqtQ4&T z-^Y5%a{uRI`yEGu@hyB$H(wY1hqnwB&l-NVT#lW>%S%58IW}B_J7sm+wbHtryEG%? zI4nU)1f)uqX8aCzfYgd1OO{xcg*>t>!_T-xmLaFyHg%AcMENDl=*!3kPN{G3DN8bX zuO*q}q;iiLH*yKND2tD}pKaR$J%yW;pm%0U4xsu%B1>8#@sW;SkwwyO%yHHN{bH_%8!5Bv4f}^%3;Su2GI$FAT5|us zFF#+Em6*=34*Tfc8~bQ0pF=Cy?X839l{jBXB0GhcjBkI)(*|aLu$3gTQ?QGq+v5oX zk z8YS!{tTTe4f?DB4v{i!KmCONf&B~?^C^GzTa3afoze>g;jEA>r2Bj z`C;o*dsse+OylYIc;|Bw&>3z#Z&-f8|J@|Z(lt3(8G}>+quDXOFJ~F^*;c|xw-lxd zhjoL}o)DygYyd|uKn&U>UR3+W=p{#EkT{f#tO>~%A77`o@oI#09$%MpmI2cH$yyS|TLust!DFTGrNE}J-Y7khPh@9gJyLDpztH`ZRtiYd zcZ39Fw?D(JeAY9BrehJ=rFpB{mfO;%!qjfOvs!{)4=-jX>nwE}3VP#_MM! z2eYx3WSbG~5zlNt(FQFNO+qeGLNkY=G3cfut9*&RHoppnOp~r7Nhs;27w2Rxvqvod z*g@hu5)!WRJ33Hk8?uM6is$;ck&wH3+lH^2EU|-5;ageHFLE=KgG270tF*(X2DTEF zZ!I3M8EFSv8*3#sBt@`iz*gfma>>3iSu#Rr>f0v;B80?{I%PJ0u56|E!>o3`Yzg1lI-carx+Lhaw>g5z=2R@c{@5=OU$(&Yh zcRQy((v9V6Gr#N1)ow>WoqIhjeVE&zpl)Cmam&zmLELdFnbUglLt1QIcb*DnSSul*Dzj}R}<$jS^kGHo~`L6Ryy9xLk0TcX;EbC$5Fmq$kFw8qC1AITYU_rvb@BOhxe<=OGZ8 zfpd7-GQM4gRAK!jyPcZ|Kcqz{B1j2j1gj@Wj7-*^ke&fgSy$w8clX(EcYO!t!c zeo1m==%1g?fL$UddT%aVo}5_A*>lHzbZy111NT9^z=U0+J zC?Jn^j#LbBU*0ua3c`KWQ=XV?6%d;|0CZN`6Eeu|k&U6dlVM2&o+DeR&nJu(&l^2Z zgZ9u{-3H^}6WzP0vzNiD?9n0~Bpn+2Lp>-$4_D|xvV{@T7bVc6!A$UuC=#6IcQ_AS zYk`*x?^(vS%aAGXgEi6(mdp`87f;18qV!rdK3A*`*%4gFQqiu3tE`-5{ai1Z@5hoU z^^N=cMZL`aPTm>GgE6Y|LOHv=x=X0wV81SBof96^jKf1J zqp(M59aVV&V|C}K5zmS&S&zAX!&0|*Vn*wz^%}Kx=ctTwY*aO$@ zmXX>=1E+uXwS0i+6X3i3LCRsK5ArlG@0*ZigJMC-R^fl-306*>%g5*Ds`M=E&&*Zy zUzcFzXhWXM>0UD5ugBiGexz?vZ`T*kI1x7pj^+Bp)`lgfwT!ptkIY0YbpCu-g}4LA zj1|Ip3}n`w5_}gzX3$p1s0awYCa@D7oHGn^qxa(Tie4x|ub1d6GDj4vHs2*9k$CV7 z&Y*?cS7fdtq2RmQz)tYHXNo)Fk;9wh5@Wqw2X^{K+E?Xdy)66dhpnE>TbhqI|JZts z6x-IzjdiU1ajA1vcryJyiM>O}r6HP`dK}-;zGmCUmvLXxv9fsgH9ywrr(z|MdG+1q zH)Ut|b|-JY4kPe+CmhP3#JSVCBF{%LWxlt!|G8eL5W3~^Q=fCsj)rDX1|;goNVh%QzT`2b)>sP$)l#Vpky8_ zqsU8R9^^Vxl)Q4(adtrLCH(!pJ(h8Kckd370$JqY*LWfx&Yl5088UYG3bb8Fi_v+SF1BW$571!OEb0d35kTP(peza#B8=+D8Nx-5Kd7 zeOo^VB4e+hgCkEUA-jipTF#U6E3cHj88L&peZQ-W*Ge3O&R@lLB|#a#ZYgT~*iE#k ztN|pftS0n(mrxcm{LgaZQey7PpT<{|If5rJc*ZWHgfm4fftAI8O|jby6*Q~Tijxl1LYxwT9Ip|ey1 zyIn$Y0+1cM#ZpOUUUEfu-of^sT&nFJWQuGJ;YNqJ+jI zbfI>(UZ8?T$PL+}NKE7spMX$UH}rtUA2t|r0}DX13z>*?Mh-DbWST4#SqYaGy}&mH z?qeyMBZ{{pbFC4;Gf+nw4fZ&EWc0D1r4v|Da->SIk;iT0!$GGPEZ91d9a@>V74);Wl$IX3C1A z7v@I^q@87>ZDF#tc{pq72r9!JW{8v)fAD8$56F(AgnIB87>#U8B32odFU5*d z<}&wMWLpPEv~F-6$;VF9u8z!Qcovz<=wh<7XhUZQep6z)m(2Ieu%m{^ZEb${=vUZE z*Z(?y8$0Lr=kYS)cIWQ7OGpsW(n)vLz-8VBbDk9#DO*K(S710N9UG=r+*|S{V0zM z$w_;(Ll4MTdClMo5>#VG(rA>Hf!KhTnT-I-OJ<6z@DjX7qRZAn&t@Hj?Ql$%5E_7Z z%Bryn!Be#fw^d@QkHe$?58J5nlakZ(Rmn4Ww)H@fbAUf;&I9GF0cJh4HcUN4PQm=B z`)D&>ZeT-h&t2alp)(IwozwVEE z&h-hJJV1RK{o6yqnaXn*r&$~8wK+`_0;^u==FGt;0IlWAQd+wXx!yDl9>v`2dRQ5m z7ITmVl4jVJ9JR zIpJfcU)Y8oc{;CjU9VO`T>iiqzvbLZ0|#3oL=` zBV!ksF8_#P1-1duH*xr0|X8$mY=Nv zsMsSyX;~s@`21vviN&H8XC61C^KOk7{03u{W3)tHW)!Y% zeObt2eL3Q`=xx%M|>`+H$_( zH`Yt$`}N@YRq+7*e6{6M%PcxyZlAk+z!M_uL=K=0lTk{n0B;Fe8k%jCkURjBLth4| zjqmdJE3=0Z)|YcHAU>8hcepN5UxtV9SpFIF9bQSMT3_aO5SS9um+^E3SCQ=US5Sf| zCFq?s>akuj-!B7S=QX`0UWVSi>+95)kByu2Ts&Vq)VpeAn8-VT=BP{nJ_8TQ4hrR*gUKo6H~SIe#?8>b%>5>5n$os8tso=yrFkjmj22y+_N7Z%H^aZo$=3*` zv}L_0PFt>SH?5hwPa?=tk;A8NkSc{A&F&f&6Y8d1F6XyAFjP5dO8M*h8HheH}DB+0UdCM%#{Z<@w@RZqF>F$c8$pw)a?M&ous zJ@=?LMUyWo^DOE?Ysca_^k`T|%x@jd(cfOZX`0t|I0x@Rq({pa)3RLHe>M$Tgw}&o z9Cw_V>$g?B2W|Qh&&%ksk>W*2i?%fZRgmMlU`4h8GOb{v|g_)dq*zh{YLWCB_s(i zF;)ymByZz}pLvEg)&H9@@&jiY;nivB?0k4Vx!LWlI7xI?4_yuIUwJY z&40YHg|5oXrZLdA4ZCQFfuvkx+1AG#$;EmD# z$Is3yeSHcyOzlCa>&#K)4eHf-ck743?;u@NFvfnP4 zJMQnZZqMD9q0}?=5K`}W{;%NguS>4M%gt{K-@h+^j=c(fnSJ_NeE4CAm^xx2zXbjX z^muuDkeCsXag18}qORDzb3fk{M3FHb}dL?5#3 z(M?!vA#2p!NuWI11W_fjGU<_AGRszfuQYN)JqXR=0a#ya1&%z?mrKAmYLhX<=Z>{y zx^8NSuE>{f@zMuefv;IcT}IRierZo4Jvkedg_n8kG^9Tljd;@i>W`_X)9^0&SAb6 zPdclSlU)qzNk6uo)Tgqy!ROtnLLW|E-LFnfU?EgV2u^B`8n)e9sxlUA4;aTKM~DKn z7@S812AEgkM$8DgR7;4=t98_RjoP|%RAiplXjoUiqL^=<5hG^)LCxG)N5xARylU&t zQS<6kH)hoCoSGXoHDfKOjC;ek%3u9-yJ(KQIQs2YODBt;Z=HBh{yZrqbY^ukxwXUC zCprhmw!`{Zabtz;TmSF#d5Pt9{dcLC$D7tg29INT^*P^{_vd46VGTG>2`M5;LB_DH zEp+nM+CmCq>qL3kDxjxqG~y|gK<77ZL(SF}m{{k|DpwZ2AzClB84o(HEDdyAB%AVL zYg>z3f5=2jQ0yPwJh7d_{b2Q|_iWL+B~|R>BO{Iy^7SD}nWM+g{fCVIP*vaW4M9h` zIQ!T2Wh*K>8(Wcxm0HhITvm|BZ;c-5?fNPK#;d;UEM_B%nMe%dWu&s?{L-PLR+M0b ztotQKt!!)IAFwu|J?dLf*1XuAw$bI0WmWM4cx6}(^Ibl5c9crUq8sZa%m2gJT5sd` zS`+O*1opno*r&h2Wr>{ZWh9=ehw|sUQs*jHB~Ot6j_VQ629s^c>b()ml$r{**h2`q zV37_>Nb2A@?3Kvaaw+~ZaRhm9zb&?z``zf!AFug5-B*<+{_mcU3gX#9@ zVX?j_F_2+AiFdgk7R#1w@|T;xmS_~;xp7rEKAk~fEG83Y=mRwM)M823jnr%Tf4=xD z4-T4_(NQrR@c5%**YF$IfUa(|Pz(oe4t5RYh}!7BqcB*SH`a&z@!2i_Cj#MlL0VoI zbZ+T~+?=NbUN7`=u!kPd5`{y$vVN4KXZ^mIPAj;YrV$x-8doJ+fF2}iKLKz6OH zq9fuWTDN%?Q4&^IUS#Rz@SWdj!`i>Nifzcs&h?V{euMJ!C~u$7+rJc!Ms;eM*?pi(wGuRXKXWZOt1K| z3aqN>aMqcO_)X!dB+pzQnd>)lWnQlIz41%@J96;$651gr`y9Y+wrCzk-Xlr3jElF2%^;|K60qt>PPn(Wz+ z=zvz-8Uj3HO^6wI)f7L#7Rm7g_Fj~bJ&2sqx}XyvT^xhRy=1$qe=cvS)^B%H(#y;eGlYQo}#&lkM z=HRI`B)qwBz0Cr_J{H&Q6|gTBNzPff%?;P31#;4*CE-8R8B?AGYlfbP_dzS8ToHW1 z*3{&Ca4(d_>dd`xrqBU>a&@NAIgJiN3u~LS0UAJ;KI&7K_n78#$=Vux^oh}J22fn* z1&-qXh!dxkMfwZrbmHuFMh>uU{O%pb8ua_fC+_q#wefGcKZKSx%}3p@vL@b+J#t(!2d=UX_S($#aw9X88$#a5P-fV&->>&{iF`Sy_~UiUm&2^m`N|?o z9_P|yorH~{*9XBBJbprrx`eXrh1OX7p!Ki>c46&-$h~A-xeRYDz7kn(nXAZ1yx4l9 zNEsq%^<#V=wt+pG+ZdL}`G=YBH#We-;*ot>-jjQ=&Gx&qeLa?UWasgG+QYd7!Oto7 zcRmO{y)NgE+0LW@Z>4X8s={m#89iIxCu|LHMLM}K8?=eLBq|{U!l$D=5Nr6Nf>`L9 z`1;Tr(bA=jLihbD`Fr&4jx#w#mkpr2=WL&w^UXaVKGVd4w+PATG`cpuV3o^CujiohXH&|Brns3p(X?OFUm zLMd87`r-KifppUq*=V|?BP}TonPm?Vo3MA30k24veNXt)`9xkUm7qUHtsan6DuJ&h z^1Z=T=TX3Y>fpi2D0mt64$&`m1$(3A2&*BUu?|QR?K#SdXIMbuJNs7NDkK=Yl@jc9 zwJ_C3=K7^uJ3}-yZohp#JSX!e-hrq4w{PB$8ozC}l<(&&k7O6bsRcEqQz8NQ#v@r1 zL_HkukgkeU08bsy$kBFM;B!YKzyWZ=@(NrBZ{%!FtuB|s1U)hN)D zWe+KTg%Wiy_{$Z?a4(8-t5*;TIwg=w%!E;>2D281fp?4@jHCq8gmF0b0+;xN7SQi5 zFALro3vdFS@jt7p>#`DW{H+vL1?TwY?C}k_Hy%PN$pG z>~lvOoHu&mfAy*zgpSBrX2v>~I(5ugIvia`zWOLT%ze~h#J+hyMT9B!SxCOr3O!|7o z_`8tI>KN}rn)l&{AFcxY{i&cYuSkEl`AtDa&=Fk=d~^%FdWU%_5_B|r=r)2h0q$$` zDOkgf*JEXZ>DF1MC~@N2I!FV_NM&e7Ynj5iT}RRFzFwUv3fQ0P7)ikGObH$=rDTrQ zb*3qjLW;7*2&iMt0WD&Tg0%B|>N;Z-c~W|HrYK0nT*srXS3A!%Q!;9DFKV|}9MNT^ zWpU1=bD(?4vyXmt+!yu7&$BR0^YqE)entHJsQdG;iq>uQj!%MLVOiL>hfEYUlE*A*hQ}I>AAfYu z2d(@O5-K5F2NdOPx60o zl^x{U3ffIrdTL|3mn=OGV{@FdwCLZnULqf)Eu6>w_Uo1peJ-EBM2L(P#Uw#>-oA27 zGHxK^YeM_PQ$uz_$b>c~i6;RME|LN7)OcLdekS{>Q1HbJ77RnDw9qSV>WnID^QkTH{CjQWdM$AYeFNfJms=5TNUg8Tb z@QhVN@=FVVBU)F*9Vo%Nq7yhW%8G_(+AB{S#eA3cf^QBl+FUO`ABiR(_;_XB)eq~DwBR$%@ ztOvaP^OAz|r+A-QCkh~ILHUpRR$g#iry3c8J%PO=Q-_)<%7yvHE0$ z8Zjdknmc|8%5&zC1}$C-SC9agX+0>84AxqL2}jW}B)|Eoj%i4O!&6xgiadk0ma?oo zbeEX!<$AF8X^9T<&518doa#>{>%hPLrJyAE@VLH}DMyxxlzd%cCd8J% z+fpNjEDc;|NpV2MCqUpa8c{zY>egd(y?Gk#5BsB@vLu40a|#;wXgbwvX;>ee^Uv0|Op7^)x0x1vSwqvEVezG{H%*hYWF1s4 z#^T%|(PVufqw_w?7`%J@14%9(ab_Ic5ne$2VwQmD1cQdQm?AW_#wMm8QFKs+lDwVuJ)z#c|yS#Ygc1$<9y-dHv<# z56`nKca@M7mA;vMR#25617<20Ntsf%GO+jMAy)~-_{peJ`$S%lH~6dM>&|uvxJB)- zL*z5U(3E{Rc(C2kb;U_Qd1?EK(jqg2K=g#vpoU{D zVGGGW6Fnef=#jXE#;5k_S#nigbr4Xp88l=}AfLTs^oK-M8(<%j@shn`lEjv@a72<; z5hSz&O87lFxCj@kJ^Tk3~^p^uR!7 z>I=Co7tkApvT9#FfZcf5X&)R0W!*k`Irx^a1X|fbY?+$W7fnBhMTI32bmR&B+a4nB zLfg7afJH$|&N85N#brRGj6RoPE8rQG6eL$c>&4oE*{nG}G+C%fWorwRz<#hSS3b0E zL3_=$C*ZAorBl6RzF(HL(7qx{6o%Vdf7trl=kJo(vxHT4V+CMgE#v6VOP zx;>{8-ClVgplkS(IGLaxwm&uiXoUVx>sbwtHSZ6exXx%G42$!|3j_8`N|OVH@q`MtfjA6ilCb# zMdS@e%L_Zg-VwAyyei-UT4Bf;<*L%I5CxqNq=^#vndLvom~bf=?0X2IN#l#cqau#U zdc$`Xl3CFfa})^%0$UTOzWpnK;&3^aP!E~oHz@qFU@Ecre-vCb!rm$QF~r=7u#*+= ztl+S7NayoMk*GI1I6C-p#2x4N`J$_IY5eK-K^R@pn5Cnm@8a{Y&5Z>Op6dP)_{*sd z4H!LNQBUdc+4~Mn+OBkCY0u!Uv0e5&y@TAkX$L9`m$4&DC$1Kn2x}v4I-`(J{8B5FB)tmKZnyNI;d#0RKBFJRKAY5QI+cp zOVO>+>xT97nY|38gp2S4&wgmI{LE+a67=X=kKkurUwO5XdsFRae*c^?@(@{zmx+pN zIeE@HDQ6H{Qyx`tOxOknN+*>!FQRhjr1F@`;zwH*mWI}<$PeBEPVcneSpGtECVPc_ z`xI@7`pVivBT^51B7cEPWWATsF{{Wrp*(1ewgsBg7c)Sc20yUSR3mzj{Y(jEGv*!` z30!dxc&gFT@ji=>)C1A*gD?jq1-=#X!lgaKb8(ikky%Hku=wEYJbc?3!!AQ+I2SQi z4Sv8={%7aGQ#gp%LtKw+MQkmVV4Yb@tvq#EX?V=uoa-g?{jy|-ZS`J0#N*=qxGG#+ z=5Z!p;1c~GLn*S9r{^zELhJ2I6Le|o)s`lT07{xrD>Ow*6G?+kN3HsU%o^=w2AH9dszuFc6v8T`*9X4WnMsIme=Fpqd&B>JnL8BG|3!On= zyrV`}(104s^#k2&Jzd!h#&7&Rlnx&}Z|#B(kk9qH=wB88V2M&L~a(N@%@&LM&!y4RIZO&RtZ@*qQcLZ13gfm z{yajJK$oYs=*+Ej#aZ>FFJeevcDCceQcgf&wwN1DJ#M&h32_*6?QCV zlYc3J6qatpj?!MkPEs4R$*T2wIlL_WVH=ZuQn2^0CFg}G;ob7`{lgNE{jQ8_+8*&c z6xt!TN*y%xtMZ2%)21Hcm5TXM_hrV|OB9;H{$HY)A188u{N3!aH96cn6GC4hCD@@X zc6}H67)^0GAtWay*PExw@6@jsn5s5qSE$XFCOlkA<7|SXy?WC$Nm13S=b)?~w^{RL zDXryot~W(9&YPdPo@}jHTghFGb4Uxmtf5J2_1m1L#oD%W@E(NM?c7bvNV)%aCK$Qa zk@FfaL>%^=iLui!Y&+!_CUVSEQsfYKg6Gk7-u6P1y+qqfi#9p98w!5%`>bqHJdBkI-)!{8y<_hhpeejhm z6#MPa8W|%omDcV;`Y{JdDn?EF{OcK_SwhG9qPE&%#I`-bFlE9pL;ONWP-K9|NC{9F zYbE39WyD9|2sRWJQs$X7c=3!?glDm?@Qk&PXH5A^eBxbWu46%p>r;JXuK%2)BY{5H z8c*J2gU(qTaSQ7dzTx2b*+tWQJ9os!YZ7=Y#0KL6u{n80Jm0r9o(iwA#-;m0M@J`{ zeh#lyGWD#bUQ4z(4-_<4u8zho$&oQd=uHd4 z3?Yo)*{4475Ij^FF)jzE#Sg4guZ4K1JFxPxtz%Z@*=f-rXaF%tbEfj;CK9W%lS6 zXaK^@WBG*Ep7K-l6}>&iAHti&sF0mMl>hlg170}b`z!sboV{^ZW!-OpQrWn z;B{Z7pMx(-QU)0y`DV<;dnC)ocTv$-kxay{B};7CAi>Z*Vo9iQU{dDc9 z=UY4KL6HP6%3MMILr9;Yy|DHzwfR^F9`T`lXK8haIQ?)|>*dk8@c(>elw!nqxTNFb zt&-gag3J2`BBN=8(Cj17R1pg#gigJ(1yn*(4eeR+h#V~;UnW~+;12D{m#+HC$)X2E zLzKsg>AqJdIKF8hm^sq&>XI^+;Ym+6v0_Q25-vQ-?S2i@gH z!@HBd_2YTb8DACsQQw5c_tZZrf5?Y@g~F^!v3w4W>+q?ViXN*v%7Aj z#*4!1_42Le{`txbyj7fE>-6Z1((=(3&*OOYNB?K1C>Cmpuxn zSU2!n*p8g$ck@*DeOQ0im4A`$@YpS2tEvUb)9F5L@LirK5atkGsq4ROGAE;k(X8WG z0c*K^zW6O$AN|^=SoqE7@=M|IN9VU!$oLJSqgBiABkfe!YV;;9q7w3vo7zKf^4{gu z0cX$vox!B&IzB2PGrtQ(urpenAA|vw9G75pv_{^PX2_^K0^NB)zeLM){yt-&4Pt^S zQTwHoKjj|a1GtFvlHK6DFW{m49~v>bFg(C3C7%=Hw|4~1*mU`%z}ridJ#d5-X2pXe z(h*o+@r)91T)Vm@XdTf8I|09_`99Uljr0lW6ZuAtek{KoVhaJS?Z)c_ zCj7RpS?;%SXIJ)CA>T!y!}c#>maXYkkxiiJisX-Q1j)$wm8HuFo#h)|CTIDQ zr%U^h4=S|EdAjnugJ>CxE+a01eTJ0g#$wJ(hD)+8gzxarJh#2!yynn4SP|!-I74^5 z^~~*4@hjE-fO##_93(T#+6NK$sYsJSYlkg4gbbKxs8*ZEv4 zPa9qbY2#CUWS(CyBLA&KXdY}m?GIDd?H|i0e2)NmLNCg^r}KiGNsISus1cibopIRZ zv+SeQc$O_QzP>Em-An@mY`9se+ zI!B4GxBfrw;zNC~jpKb;c8_gaH0i)WdEI68))eK@>Wr?TSSuaY36HuoWP3%h%!RMu zFZ%IX3fghM&KO0Ws$9oX##kdMLCnHDSW3yfuIo%wBteiyLOaJS&~K3~P>?nrHRVi^ z7iujf^SW+rj8d;0^YN(juCg7bQD;g<=ly5cI`#wS*!{=Muw8z}g@dPc7rU?fE}zpO ztcU82k& zEE8-3Yq;PaxQ(R&GU|2*wuIxyiiYA-y2N*r?7zv8C36gGP*Hg}81ECqQ@GALn5)Pv zcxXvZY3d-Q)CQKvST9*Jor~RYh_inP-_G@a|K%ylx3!!;UsOd)1pn}@W}OhfiEsIF zz9Wi<^?()(4mcYWROPfAHSx>neB+A&r$Gc;611IlW&MtCNBF?+!f8B8(pbR@`F|ND zUUx;59b0HU`}l$A19Xumh>~hw?Z~r%zsf$Z$S5VYEYEWLq9Hv;+m2y`rwh6~{`7*U z3x5mP<|rs0Z+HdQTTdAGE^JANhCRr*oXZLw-q40TGH?cujBFu1HqhZ99(H^-;)H$d z_WMxcGUL+nQL&EfCHt_%DL5uS7#wv8atYW?L?6NrhELPpN9iJz)4ELcaT@ZB9AKiC zKb4s+^>p>VsqMNwUF|&jSUm2_VoulN%W6kH?X4P?K8!yKT^Iy0T07zvhtGZc+C~j!43jJnkeH(l&HG8Ipb;qg51!1lHL)48KK^2MwHF&j_n%8Jp zcaAEl0{ZppBAc`dQ0o~X{Y@43Lz1&M)=;x2Ygl)R+OEF*SYtaUbAzA5$C{CNcb^v$ zM3ECt@b%v+Z;|3Wyjtz34`D&A_gf8fSC_xUVs90CEjy!rQPVL3nxV|`?<-(dK<+?gf#-SaKo=*aOp} zd!E8>`AqPo=oIS~0ntS~uYPZc$f6?}ATMYNA_!fL-Ll*5MKUs@=S5}_b-{Q%zm$+> z=r?lE=0RrZhAJV?g>xh+0j^x)+Y;~#kB~BgwO)!i5hD>t;S)AbWD`5C&;Q~mYt9;Y zS7_aI!%roqdbwoejyp=|qJC-i%QrWd^yyp#z&Ok)yzyk{WsWtRJzqqYM;HAw{0-=) z=vneufNfx_HDykzqQlav$P_tw3XCi9lE1=x)@MPlIz$ zjFpzug5%6Y@Ql_%dJwp_=#du6Q2~{7w}E+}XVS7z35!6I0KJd)7 zD_r6WbiQrPYI`;KNm)JODJxIxK>Gj;mnUAgM#u(&j=w563eS-Yk_7BJR;k~|Y2Z8- z+12*#r^n@|XJx!gqpLk^z3%90e>QzQ8;`Lvv+Iem_QyXRX&tL`n0PDLV{KD8jzU24 z|N9j13GGSxRIW2e>GeY$PM}*u-wg~73fX(>DV*1SYhx5ekfRR%8;woT)J!oCmQpfD z>pIhvem~T4E^0mMObKrfa$_ka^SZ7xMv;|c?oh|0u6GC&b2L*jdhQ+zMLr^U=gmH*#A%fhcy&-3q({WRjD^^Mzk{|4G)peIpv3z^|s;=^pSoyGg z6@Q}NOtl`io*EidukIYxwtm!&8EJ&*GC}3UYrbo#c@>6rr>Qx2Y*;tvohbt`kGZBY z{@tjdL7E%6*;^smYZyIt_~Ubz+ieR<*WL9zLtmf!HJhNi|%@aF|TUZu~%f5>YCz1L@> z#Juk|`ucV8^1dvuQ+WpC_-d~%Sw};BHFb!ur#sg*h>!euR`TDOd3#eoc0#_VuS}}A z$$^iMQ;lB>J%$s8N6;^iV^?dhqv{^)-IW&)Pa7pPD`bmaUg3Y+zSN);Q8P;D zH5YF4NiVQ|hdj(Eg7!W3zItAPsnwwkPDi|Eu85O-!*D2bC%vrpfDiL8`{ z?6@_jKD2V>Ku`itr}W9X1o1W94j_ZT8gXue65ud6>pY6Ojf`SbTJ!KbgwFL_iOdn? zyrNZb1WAR(gxtnY3D4>hu`S{MbuN8u7}Mu9ul?)uyN(_nkL&cyR+H5@#M^>oZ3&xX z=i-sDHg~t2o^dMgUXX`lEfSkP>Mo&j&g^Au>vEPe6)nnIGn!sawTFaLzm6(T#8}I7 z)NFsijXWcK33<#luhvl8RjBLEQLUG1ecQUqJoYNct6^^7MGA|G7>=^Bgs$tT@~Dip zJV(u|PruT%hdY)RQO0*{#_HWQeLOs}emU3H^x=-q!m%~|W%zNU|Le`(-Zv~Q-q4$32#iPbk@Qh4 zA=;O8wS0lf_=!z;1d?Tpo7;Yrpgp*uEI4XNo-=Fd5zLWnHSv%VtPeMi@EBj(_rRiA zDU##cPjG~FW$$U-qyw>Yy)Qzu6W_H@*(c_^N^lN17jwO2z8}Wo3h#;Hu6_CN#n#$- zS}ZPNOMfU4-TQBBv85Im7V2>=uzk&~kKAJxndZ5Fi)>%B*~LPeU;jhdY@8FJKKKZV z3HR=9Pf(9?YkMArgms-cietRFAL7 zOvy;RyFF#8TIYkqANeIt!=9Qy?Kc*dEv$W^@)C>d`oDQ9W~(^Soo%*B&Z;;>tR;GV zI~}Dj$Irn66MmwLhxZ>mQ#=L>j4Uf@_z_c)wrXjB3=)s8&>!yzSPwRXEJ78~K5O3O4K&tzOs1nj|q4D39>_e72T=?-Q+RD3Q~?2p1+Jcmx1?iNb=uaMmQo3L0P<% z5SPVuX#%X0e580|WhJshkQnAEREu3|q!4Q8?0#6vgNd;08Ry!ZBz;d!Aydi5*7vasZp3+agUgls_?$$q0PW#1{% zL-v?TchhcyLMU5#j zDc17%Tx9@xIGk45PS)6U8o@s7HD%d?h&u83*Yp5 z4$<2-*PX2g^vUKwHh+3;g{_g2*Z+Nur>=?2^ZA@5CFm&IL?>7H E0lqB-K5lJQ@ z5%`dVru?r{jRfG_;~k|$#ELAXEN2w|rzDn@a9%esbn6v4CCMZz=#SjM+L08?G7w%+l+5*G{HoGIRbYC_i>2xvGO&qX$e!7ImeT`W!`d| zNXYSx09(O_^}}8)9kojg1vpUt8Qvsn}gJ#dX( zROOLcK3Cw_mnakz=UDyR9JAG*nP;DQ%0Vx8xeQA7{oj)oh5ea#@{YMY#d9uNJ#Fh- z=A5WnjR$7V$*+0BZJ6kO#tMm=qEd>blG%Y2z5f%#KnC~sh^64cjM>oFXLwO;NUQ*F z!wA8W`AMB%wj;|KiS)u)&}ZhHXh7nKGL}_Yy{HX3;gy_UqmjIY05|Qk4&K8@p{gb zMr#+%?HKvRE#}QwB)sohidDOhxhmK)S7xuv#8PaZT@#Vn_udt3YNuV{>2ZFJXI8rp z(*EoquKH%N@%{2>*zH)Y$zpldKSJ+QuW*w3%6 zXOLBN4o1r!R2#KxqBF;{8V;_f5w3NFvowYtwPBdH=b$xQZAIOOu(KA&XCK70jdrrC z?1FYSKf#sWp9}i6E`(qP)+fqTi{JfDHSb7+tC}7?}r;M|*tm zKbn@~gH6^NUKVpgbLbz|wYu_&UVMNtL(bOca$*!zD~~o7PQ+i0&BE(O3ZsqKb$@*8 zXOTo}jZ*Ya6zcfo>O>snD@>T0(QxjX5o7h90Xy0SJUP4?7J#{S5Pn+&%h!sDb9fCo zhs?;zqeo&VSU=NzHBij64}GW@OVSCTw3%#lLc2%{H}Lqeu3EH))J>bIdk> z=EQKK=RwqG_pLpbM3ImGhNGv>i^r{d%iIX}-F>l{d5D!!FX?+%H zz|3M|m?2TpS`!t44OVe~H@2%D8CEhvcrQ_k&&~8>EbA3}?K30(h)ieRxolm=FRNoE%sm| zeaqa58boWn2gk!paa)r1`q1Vi41{Sp&jWw;Bjrl!}&sq6)^f01pMSHC7 zoVrVnbycv-jM3ZRMHXWp_E`Ii{3p!F%dl%=!_mW)Y42S7M##?dP|B^2QT@W_x@(r% z?vKTdBD4AJbf@34*XO$VcZYepwm#0&WBX@u9PLj(+wF`V0b+hZ~-v&AC{V=}* zBDNZcmx}tb!l?WR8?9UMO={1-Z!2^@eXRR!w9ZUo-nn(1ySlU$-WK5xk3H9#v!9Qh z&uFaz?%V3J*7Y9kAA478;!&uD!L4zuIk9E!ynjaPR_Ac~*t=Tc>8W}5cW^y#wY~Te zuGsmET$SsQPhHP52LJHSX-69uw+1txfA8<>r5;iA;~D1ln@RT3?K;o-HU=ASqk5NL z`=eYw{<{Tl&$7q)+Ic+fC#B&|SVxvCXd3LHS@m61$>)j0(j)O2pS;;RJyd$6J=hI* zX`9K!QQBJf#@`I;Zn6HHJ)nDXa0&Lt`{M-yP zXI#r~hnin5PxHQ7p5gsyhoSux_2@cidHP+f5A&v0c>4HHAis~czg5JgVZ_selJ0)@ ze7r&Vg_jFDMC}NEwnwrHbgJYk_=6Ot(QZ`vC+%}A5mbp#b7(^01&UpGmgZ;geG?{*)mzDu>Vfk!%r<|YS>v#l?p@zP zk^AdVbGmNz++(o7rMA3vRHp?r(@<20?E}^0`?~w!ZcsgW%H$n*h0TC#hl>2XyHGt| zyS#r@eCX@$=Pf!q;~O!o0VRT{@ftD1P#O6D!Hy^t$tEPP5mcAYrn_J?XF!SWcv*v| zi1dIf=~3Kw{*Iq#zxp&8mkWD-qV79(qL-ZO@6 zgEv?t%(`!pO9QYedE;@54x>m!00X>e!icv&?pX818r+^##7I-vz$Ej??*w zqCa-H_WKw1S9zW2>uzh^D*n5-nw512QA{CK@c8BOZ&gsagMwVt66nWggYNVfcMxO? z`a!{o+mPK48*=-iVQ*7yaV3*n~ zY^q1D2RosMV{?u5x`^Ff9qn;$mf7y_6Dl8S;`?}aKUBW|n%Z@XAU?o?DGG&gha>*VVj7>tpY3op;}{0EZuPL?Onkq3(0L-5hweBt zrauka+);8U>%2TY)YI`N)xeA%yhXFm=(G*3W>^HG#v&M$O+`X%7Csj3%vKd4I(k?& zwWJvX&l+Rj?#E}D?fx)Y&7nGQ{C6aOvs5YOc_P&kZS}mrTuXit&h2@<=8xVHa2&yItiX+(G=#5mim>c z9==~ousCY$dbCq5&|qEx+;*n$c}DtSgZsA(i|!wDz9qIkc1*HvTIN+7tu4csXSe&d z%(h-1bGl{TImaBoLbM#a4rYA){$4lbE*`c!pkBA@Dp8dyLCdwg?o00Q;N4^Xn&Z1+ z-9z~Ahrir={pxr=n``Fv4nN;6xC%`l(*NJyJ{;%zTZlGz{HYq5`Ot5YKtO&fO(#(V zj~>I)%EcMJ=j)3J9L=9~1iXUQ>l%4+%dBvS24I~WOO6-6=uw}RrXOXw`A0|ihBlHa z_b@J84Ab&{a}2$DM&)fp8*Ijgcq-9GEh3s|4Lh#GxrxwJBe9tsVpVw>`)q_(nZ~ND zEDpSDmf7x4G1|Be*5g7~-J9hJ#r)=me|_`fzjjD`$$QV`xt=lnlijnPc_CjZ>0jw-G!e;li9IN{r0whWp+16;vQHJzLb~viJ9PEtGTH$jvqTqYg zo*;=HW`Nq-VS^*6L39mX{Ky7CndTDW%R>>dN}qZap;!TAN{?vugCSH18AB{Y7cqZl zEK(&u5v6Lzp>5zli->W=eZ~LgWNI^vp4!szdUPgNjvb9v@i;yYGqXE}z$J3Ncg-@} zeY^P24_;TUdvCxmzx(#*yWe5*D@@*e`s>{jyMI|eeX{&o_g$)3{rB9R&)l%j4exII zTjdRmz z;G6!Az??ZdwsO8cZ?Ot!aDVeU_AXaZxLizzn|TbidnyOCWY6-8R@%F((e-@J&eX#= zKFc#}ctgVF$o0hwtl?MQ6RT=&*Kc{s8%$X1Cm7di(w9tS$HApl9(=Rs|Pz{iue*d6wyUv7CRG8Pu25Xv&?pXjyKlt zDI4*|?-upx{}z6^gd;r9{hT}Sj9dAv;bB}^0l29d+_IRzSHriL9#2aQS zBVZY-2Gq$J$Y>ZZNJQtz6HuwfG((@ebwm`XKHa7wQV%$n_`|u)$g~YcU}YT1%4Gz| zZR2P4fH-XFT5%$1BjxGLUi6FIq z6^CFKNSJJDDp8RI_FPS!nS$#EEd(n4h)MXlOrNb zk8`tZkp&L@=68R$W}o)kat-OFcD+@kS2x5LgQ8Jws5-vU@~;ch^M&Js2j!t_kP^z$ zMQA9nw7O8DcXv8PnEI6^_nzP0@&Cb{(BOV?A=mn?G--NW0_V%$OnA zy~XFx*ekn*WoKTtub5N*mVIzt+j-yo^VEX|sYgvw_lz3TJvleWGY+qRyZ+VPie$=+MFDf8N!Fwoa)x;Qs z0r>vVqq>aNL=rqjhy>xI%S3gj4(MT&=mUBfL;RrD1k=P)t#Q&Lc2M{5(eymx7fVj; zn>FxQB*Gq3T-JYpo6&#g6(M$KAVmusi?(yML z`KOY@^N~i(lRN7k_nVj2B;x<-+vk1ML}k~C^6UZitriP3T5?r{xAkxg9Y>GaRBpEW z!i(2~ZBrL|ZkE~ZkFCmlz3lP8+=tMM5Ao^UJ#jwSQ^ozKXVF{5c`5^+HuuwuGx%5*rQfWG{fJ5aH5m_ z9<$AcRp&8M0W-!pKg(?QYoX+QJ*V5j$;W@{^_FaUt4PW7ze=m*0Y!tz@oRros~J_C*CXa-#~aMi+Evcfvr4;_ zK^67sYk!#TS$~)ZYc=wU!=Ls|k9YR*z=zk*3m;>wH5coR-&Rz^Bdpl!ZrVV6zu2h9 z%b>>h<7vkx^cuJqU4~bgoe)nLgFioG+E%zEHH@&n7OT>gYSKhdy;8%_scXqq9h$a}P*J?hajUJ8{$48^@d^jdE$uf+*NuO$?gRxn5L2k6y4gM{D$EtP#qmF%HXNX_BpPS_w z@dq;XUoUsc9_8+mcP@zEo-u!}zpOn!S}Ylz{m`rdTVr;%pB??Uqcy`8j5rZ{0)gUH!A&{oNXI*~xDfd*0tye*9;KdM0<}0k7>V zcU`9~{667ll+!BK{_oz7f5@YBkMn8M!<`x(g_jiX=defepLB&|J?6W4D+n5k@VVos zvl+~++6@2rhZ1-)V=;uo=_|LnH>t#OXb7$6H{Fj}Mkcc|f5i=q>CjO5qJpNE?*?M>PSvr^rRf~rE%5;scV)z&aR>QZcKCu-GH%uo^L9;aq`TtqJ>9mbar;jtaQrML6{ zcBv5gYPnOtUaDxmT2urG|F;F{>l@#NnfLj94tLbk(HVN?w{H1cWewi3=+(1})ghXl zgs3V%;)_+A4nxSfMITJn2kh*fpZEPyjK#xiWmv>50xzCJ7}$bmn#&BrTThRdgR+X& zNW{bJbN^<*3E?E?lNi3a#^8H+1?#o)%nIQfc8Gf3d})AXYATW z6u@G3(Nz-`u0`TU&{N`h$cnSMy|d5q#qtGu@FOTw*|&~>FQ{AR=a_AN{RrT8Q0vRx zTe|WLzTZK4y?nkzTY3EFFKg>_D)3Wd>C;xfRi5A_LRJ1;J^Sd>kihepP}dz^jD!F% z0*-rT1OC>N?+9TUzGFQ1wdWrUDN~3N@BqFUOkoDKD4ij-IemT)@`r8AZVhwvVx=%> zo*~C$uAmmYN)JpRPI3;cFi^`ea4tQPm7@xWt>9YNBc9jxD#7^}BEIrBi?Awt@F6Hk zt}V!)ogHi;mea!yC$G_+37_B_JFCaJS+>L%hjrisLr+yt+$VC7ecEc|@O^B0t61Nd zK*dKD0e)JMGS%Sm?`E%m^x*ZEFJNx8rg@CS1;NFkHO)QdJ9Zmhb>o;3Y0bL2NQu2h z>)PI7nYM~#AZ%lxb!*-}kk;AG@4F{`co+NaELux{`ScRsIKN2yn9ryWT<^cGqodr{ zj<=71eIF2i&izJF|Hnxcp^H}w&%68hw5h&|Cdy|VJ!mbw+&YehRg0WFXR5|d9iYRRj3e?}N_5#C;(Wy#_?(6TY*Z(tqFo;i2Iq@mVaGzh{ z$@9Zf4KZWORxmtu>}on|^{DBtBzvMAce3v2k;q29PORFPqLEHUrIMxE^875b-LHk| zhncj8h{_L<=iQ%ibU!|}U;8wzcgy(g9uqy*gKbXBlPFQO6E8xnU|V8)cW1COSSr5k z^AxElNu&=G2YTzX?~jRCsU=x~9{f4{5bPBFMiC9V>cPVsx_SI#tAn_Zc3^isI^O!+ z!&$(PJRKv(4z?S?8RwhP1BV1<+5-yB2(lIAjzwul-LWz<%f({Zk$Bl*!R%n4NQ%Z? zjZ6>Mp;)MlZ-i5G%vOIG+^(PNS@bu{TM7I^(0?wfunePLb?|P1U+mt5`tk00^*7(W zCFCK{{4f)G{ogCKN7qIFZSBFWa)^6A_*_qpe;-y+J^ga|FHe3_A|WuZo*yRz>28M} zIDzLE#LxoUWqY`YXLYqhkQGY`OZQ_eYE*Wi%FBWi?eBg0*Ea&WTpYb6ja|Uc5Muxuoxd55oL|cj8LIb5FWAbKkhaVl&r;-HugRo6Xoho>Ss8cUpGN7<%yjvh(L>d1moT z-cWnL%)_?|S=K6m0jdyF476sEl3*<$WKYyey7c zAwu385T0y&mzKf7=7FXVHZc|kgdTV$$3kS^W`&r^G57@24Hl*bhWo=XV;#*D)9kDj zc7@|1P;e&^i5@IMg>-f}N)O&cVmJ(BMQldZ*jl!kMPM}xc1Nn3Vo5fOr)9^6&FoBk zs#rDI=04+4yW1b0-CeWHcE45}r&{#Y?umfkE>WCc0sm%s_rS-?uYY@MT)(+1zw!BU zq+j+^jdvIowe=x>t?v+VFFB**829P2SKe>u-FB~*cQJJRIlKRO@zdqo50+m|&o7qz z>BYY-@4tvdoqK9-$4Wl@wlbG>Km0Ch)M)zM&Vjw>wTQ{T+C|~kfBe@- zPVKNA`tge&EobPhf!^;o-X&#5UT<#9_lz-e|tvg1w{>RH7Xpno^x9$j>ou~Wr=FVsZ z`PQAI_aByVyg&29ZvuLM?S0%wIL?neh0m9( z=@>I!>z%sgTs#56c%9YLXn4g|zl9QoB7SPM$kAi`o=IviPxWwwS%zXZ#+cD?8yO*1 zb^e&R3UA)HffdC8^&RFO^UlQX`(wmQ7-O8DWw!fc#uC3#VY6D&oDgg zV^5p4_3`3}V`p<5A5O;*&g`*bh-2%I&oN?|`@|2&$0@rX$Hwm)JEV3h*pvFi_;>JY zAluxMNISpKl*~pk?_7)fsR*_nO-q!N=2Plnu3Mn(B`wk69WgR2nde+fqk(ZuR-M|O zF&adU4esAEEV_Tp`IfGlhBQ{-n67QT>ba%fe$MAUEp}nH^*H8y%k1AfX6)&RMq%&q zt7=Bndh?h2^{SRxY3*W&F zeX`R&?&7)r79l0%+V5|>pQrwGtazMXk8{k^^1q=UeVD3`zoN^#|MTn{JrRz{AEezU zZF$0p%HSKvMRQKwtgO21?tVsnzZyU`oT@Ejoa09}8`9+XW-&*M5IrW@g#C;3*yT%5o^i3{0nfy5u;(AZ+A&$6y3DcsNZH^Tan0@9 z`BwSBJqbCXeXurOzPnkxAupYnzSUFVi|9AaO2Y=3$nXUmzy^3?&PnexL9@oicw_R^ zp|0cdL#uix--XGJDRf(4vWK<( zt+HFt9WIV&#$B%l3%9|`c=|lsuos+!6RMB$gd1c~Jrguey(E0c6rQB0o*w_UERpv@ zsIJ18#)iFS!<2B^h~glalCibm0%PL9F*e_LFp%{@C%wYDYQw^wIPrs}cRpKFSal{_sPRba z$N5=iyT8wDp&sY=OPmsg|I-~m{PxAH@BH$+9_wd#E>W?r{l=$#73*>0ns>GBt)l&i zWf~VWmVvSVG{rI$qIi0VX5gs1T-1@b>O*aJcr@@ltpEeWMU7Wdds)1Pno&T?CFX$U z$*3lx!9F5^;Qi20uu4X6L=mp&=z0d7>cKYVz-^AzKX~3q&Fo<_E8wM$h$g7i(XmdV zlV%x2F!;oni77I_k%DX#L3|>g+=!+zPoRWtUsXOzzDH;b^DtBvo#?uk5V zRs502L-aR#*o}A*#?V7nDbe8hS+>F`1AC!v8Rb`tCPoh{&s@SD*M29;IDcy`MnpOAme|T4>fSApsz<=nUJiEn zs#js6>Tob4^OxnilA^hDuoC!CZA-of?u2Ke!CPz2ZE%-k*G!Qo`#N?p4GL9RlW{Sd z?{X}U7hYv_80TEHhf8Q}@t@-_kI~s9>rB*Q7RTC!9IG!(ZCn#Z!c@-I{C)3Bnc5k! z2YYQXvSAU-octWSvj}Fw;9;3mR$!(0AC7THusXlU=Um;nqKpt0a;>HP+#FkBA!?VJ z>92ORWv5gxI@joRe@=4MtHZe7d%6Z2JSHc7f2-a)Lp2I6D33RlUU<)Bm*62PS64Zn_oUC%o99MY!Dm|Zo`Ci6w|zXGAHJS@A#+O5G0D< z>)7xt^(yOzNsxzDmuKFRTk*N<7B&se%}BEin#;$hPQdeaZx)-KuP1Ikf_`xA zw{<-Rp1+$NZymws%z-;BDpfPeODxo?w<@fEIb!s?7wrR?|p!t zJrbsiRf_UFZSh6sZhT=aR#7h<4)gVBMvY#=2(*j%;8BYpNVIgb2l=D3@gL2Gu`-5p zfj8E-O)p)%Vy|(b9l@6DjKhm!wOtQwrhju|6h+ZimnOT*pER9$RC8WCF|=6(@+A(KB-qTsy24^%rZ@3i&4S z1C);U=lp^ssbDfjB7V4(7WG(zAF67PEU1;RgyxLW(?d$1W}8$qMJSJ7j1_x;BOX- zl4r+iF>wW}cLe*_$j+4$E4$X)IqSiq2c!_%Sn?@BhbQmA>hr7OUOnv`qKl{9ts-@&OAc13H1)ntP zP&6JqGDgP_@E|>c_EsDQF$S!l({B-f8&Sc=+8w*{71U)%fx*vg7F~>oZ_juEQT$?6 zEI6!cXB-i4BXQfQS+m)X)ELZ}>Tk;nl@_vb^glZyM?o!*3Vc++Y2;_LIW5VY^$! zJ=$yT4Nn`zzvHFFJ5xg`7StopIE^0eF#e>f^;Cq!BOEH%pf1Bo@M8%B43(+}Ds0uYPP{$sOvtjPt$X7n8U7X6yt6HAm+S=E(Q YtDm3a6mrif{?YOr?_ZXDUfv7y{~_5BDgXcg diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js new file mode 100644 index 00000000..355ba2c1 --- /dev/null +++ b/e2e/protractor.conf.js @@ -0,0 +1,37 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter, StacktraceOption } = require("jasmine-spec-reporter"); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: ["./src/**/*.e2e-spec.ts"], + capabilities: { + browserName: "chrome", + }, + directConnect: true, + SELENIUM_PROMISE_MANAGER: false, + baseUrl: "http://localhost:4200/", + framework: "jasmine", + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function () {}, + }, + onPrepare() { + require("ts-node").register({ + project: require("path").join(__dirname, "./tsconfig.json"), + }); + jasmine.getEnv().addReporter( + new SpecReporter({ + spec: { + displayStacktrace: StacktraceOption.PRETTY, + }, + }) + ); + }, +}; diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts new file mode 100644 index 00000000..99327f1a --- /dev/null +++ b/e2e/src/app.e2e-spec.ts @@ -0,0 +1,25 @@ +import { browser, logging } from 'protractor'; +import { AppPage } from './app.po'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', async () => { + await page.navigateTo(); + expect(await page.getTitleText()).toEqual('egon app is running!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain( + jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry) + ); + }); +}); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts new file mode 100644 index 00000000..c9c85ab9 --- /dev/null +++ b/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + async navigateTo(): Promise { + return browser.get(browser.baseUrl); + } + + async getTitleText(): Promise { + return element(by.css('app-root .content span')).getText(); + } +} diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 00000000..ecbd8575 --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2018", + "types": ["jasmine", "node"] + } +} diff --git a/egon_angular.sam b/egon_angular.sam new file mode 100644 index 00000000..3aa80ef0 --- /dev/null +++ b/egon_angular.sam @@ -0,0 +1,1933 @@ + + + + 20100203 + + + eGeneratedFromDirectories + -1 + + + + + + + file + files + package + packages + + + + + + + egon_angular + + + + + src + + + + + environments + + + + + + + + app + + + + + general-settings + + + + + component + + + + + + + + + + + + settings-module + + + + + component + + + + + + + + service + + + + + + + + + + + + + + + autosave + + + + + autosave-settings-component + + + + + + + + service + + + + + autosaveState + + + + + + + + + + + + + + + domain + + + + + + + + + + + + import + + + + + service + + + + + importRepair + + + + + + + + + + + + + + + + + + + renderer + + + + + service + + + + + + + + + + + + label-dictionary + + + + + component + + + + + + + + service + + + + + massNaming + + + + + + + + + + + + + + + domain + + + + + + + + + + + + modeler + + + + + service + + + + + initializer + + + + + + + + + + + + + + + domain-story-modeler + + + + + test + + + + + spec + + + + + language + + + + + + + + + + + + + + + + + + + + + + modeler + + + + + change-icon + + + + + + + + context-pad + + + + + + + + palette + + + + + + + + modeling + + + + + + + + updateHandler + + + + + + + + numbering + + + + + + + + labeling + + + + + + + + + + + + + + + + + + + + + + + + + + domain-configuration + + + + + component + + + + + + + + service + + + + + iconDictionary + + + + + + + + + + + + + + + domain + + + + + + + + + + + + export + + + + + service + + + + + png + + + + + domain + + + + + + + + + + + + + + + htmlPresentation + + + + + + + + svg + + + + + + + + + + + + + + + domain + + + + + + + + + + + + + + + storyCreator + + + + + service + + + + + + + + + + + + domManipulation + + + + + service + + + + + + + + domain + + + + + + + + + + + + elementRegistry + + + + + service + + + + + + + + + + + + common + + + + + util + + + + + + + + domain + + + + + dictionary + + + + + + + + + + + + + + + + + + + replay + + + + + service + + + + + replayState + + + + + + + + + + + + + + + domain + + + + + + + + + + + + domain-story-modeler-module + + + + + header + + + + + component + + + + + + + + + + + + modeler + + + + + component + + + + + + + + domain + + + + + + + + + + + + + + + + + + + dialog + + + + + component + + + + + activity-dialog + + + + + + + + confirm-dialog + + + + + + + + export-dialog + + + + + + + + header-dialog + + + + + + + + + + + + service + + + + + + + + + + + + title + + + + + service + + + + + + + + + + + + dirtyFlag + + + + + + + + + + + + + + + + + + + + + + node_modules + true + + + + + @angular + true + + + + + cdk + true + + + + + portal + true + + + + + + + + + + + + common + true + + + + + + + + core + true + + + + + testing + true + + + + + + + + + + + + + + + forms + true + + + + + + + + material + true + + + + + checkbox + true + + + + + + + + dialog + true + + + + + + + + form-field + true + + + + + + + + input + true + + + + + + + + tabs + true + + + + + + + + + + + + platform-browser + true + + + + + animations + true + + + + + + + + + + + + + + + platform-browser-dynamic + true + + + + + testing + true + + + + + + + + + + + + + + + router + true + + + + + + + + + + + + @types + true + + + + + jasmine + true + + + + + + + + node + true + + + + + + + + + + + + min-dash + true + + + + + dist + true + + + + + + + + + + + + min-dom + true + + + + + dist + true + + + + + + + + + + + + rxjs + true + + + + + internal + true + + + + + + + + + + + + tiny-svg + true + + + + + dist + true + + + + + + + + + + + + + + + + + + + + lib + true + + + + + + + + + + LOC + Relevant LOC + Classes + Methods + + + + + The gross number of lines of project files in the selection + The number of lines in project files in the selection with at least one character between ['a','z'] or ['A','Z'] that is not commented out + The number of classes defined (or also declared, for C/C++ systems) in project files in the selection + The number of methods defined (or also declared, for C/C++ systems) in project files the selection + + + + + + + + + Base + + + + + /PACKAGES + + egon_angular/node_modules/** + + true + + + + + /PACKAGES + + lib/* + + true + + + + + + + + + fachlich + /Base + + + + + / + eLayered + Replay + + /PACKAGES/egon_angular/src/app/replay/** ++ /PACKAGES/egon_angular/src/app/domManipulation/** + ** + none + eCreateOneFilledFromFilePattern + + + /Replay + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + Export + /PACKAGES/egon_angular/src/app/export/** + ** + none + eCreateOneFilledFromFilePattern + + + /Replay + /Export + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + Import + /PACKAGES/egon_angular/src/app/import/** + ** + none + eCreateOneFilledFromFilePattern + + + /Replay + /Export + /Import + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + Autosave + /PACKAGES/egon_angular/src/app/autosave/** + ** + none + eCreateOneFilledFromFilePattern + + + /Replay + /Export + /Import + /Autosave + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + Modeler + + /PACKAGES/egon_angular/src/app/modeler/** ++ '/PACKAGES/egon_angular/src/app/domain-story-modeler-module'/modeler/** + ** + none + eCreateOneFilledFromFilePattern + + + /Replay + /Export + /Import + /Autosave + /Modeler + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + Render + /PACKAGES/egon_angular/src/app/renderer/** + ** + none + eCreateOneFilledFromFilePattern + + + /Replay + /Export + /Import + /Autosave + /Modeler + /Render + /PACKAGES + + + + + U/ + + + + + + + /Modeler/egon_angular/src/app/modeler/service/initializer/initializer.service.ts + + + /Export/egon_angular/src/app/export/service/htmlPresentation/html-presentation.service.ts + + + eTemporarilyPermitOutgoing + + + ULCCCCCCF/Modeler/egon_angular/src/app/modeler/service/initializer/initializer.service.ts + ULCCCCCCF/Export/egon_angular/src/app/export/service/htmlPresentation/html-presentation.service.ts + + + + + + + /Modeler/egon_angular/src/app/modeler/service/modeler.service.ts + + + /Export/egon_angular/src/app/export/service/svg/svg.service.ts + + + eTemporarilyPermitOutgoing + + + ULCCCCCF/Modeler/egon_angular/src/app/modeler/service/modeler.service.ts + ULCCCCCCF/Export/egon_angular/src/app/export/service/svg/svg.service.ts + + + + + + + / + eLayered + LabelDictionary + /PACKAGES/egon_angular/src/app/'label-dictionary'/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /Modeler + /Replay + /LabelDictionary + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + ElementRegistry + /PACKAGES/egon_angular/src/app/elementRegistry/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /Modeler + /Replay + /LabelDictionary + /ElementRegistry + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + DomainConfiguration + /PACKAGES/egon_angular/src/app/'domain-configuration'/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /Modeler + /Replay + /LabelDictionary + /ElementRegistry + /DomainConfiguration + /PACKAGES + + + + + U/ + + + + + + + / + eLayered + StoryCreator + /PACKAGES/egon_angular/src/app/storyCreator/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /DomainConfiguration + /Replay + /LabelDictionary + /ElementRegistry + /Modeler + /StoryCreator + /PACKAGES + + + + + U/ + + + + + + + /PACKAGES + /Modeler + + egon_angular/src/app/dialog/component/'activity-dialog'/* + + + + UL/Modeler + + + + + + + /PACKAGES + /Export + + egon_angular/src/app/dialog/component/'export-dialog'/* + + + + UL/Export + + + + + + + / + eLayered + TitleAndDescription + '/PACKAGES/egon_angular/src/app/domain-story-modeler-module/header'/** + + /PACKAGES/egon_angular/src/app/dialog/component/'header-dialog'/** + + /PACKAGES/egon_angular/src/app/title/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /DomainConfiguration + /Replay + /LabelDictionary + /ElementRegistry + /Modeler + /StoryCreator + /TitleAndDescription + /PACKAGES + + + + + U/ + + + + + + + /TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + + + /ElementRegistry + + + eTemporarilyPermitOutgoing + + + ULCCCCCC/TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + UL/ElementRegistry + + + + + + + /TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + + + /Replay + + + eTemporarilyPermitOutgoing + + + ULCCCCCC/TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + UL/Replay + + + + + + + /TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + + + /Export + + + eTemporarilyPermitOutgoing + + + ULCCCCCC/TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + UL/Export + + + + + + + /TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + + + /Import + + + eTemporarilyPermitOutgoing + + + ULCCCCCC/TitleAndDescription/egon_angular/src/app/domain-story-modeler-module/header/component + UL/Import + + + + + + + / + eLayered + Common + + /PACKAGES/egon_angular/src/app/common/** ++ /PACKAGES/egon_angular/src/app/dialog/component/'confirm-dialog'/** ++ /PACKAGES/egon_angular/src/app/dialog/service/** ++ /PACKAGES/egon_angular/src/app/dirtyFlag/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /DomainConfiguration + /Replay + /StoryCreator + /LabelDictionary + /ElementRegistry + /TitleAndDescription + /Modeler + /Common + /PACKAGES + + + + + U/ + + + + + + + /PACKAGES + /Modeler + + egon_angular/src/app/'domain-story-modeler-module'/* + + + + UL/Modeler + + + + + + + / + eLayered + Settings + '/PACKAGES/egon_angular/src/app/general-settings'/** + + /PACKAGES/egon_angular/src/app/'settings-module'/** + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /DomainConfiguration + /Replay + /StoryCreator + /LabelDictionary + /ElementRegistry + /TitleAndDescription + /Modeler + /Common + /Settings + /PACKAGES + + + + + U/ + + + + + + + /Settings + + + /Autosave + + + eTemporarilyPermitOutgoing + + + UL/Settings + UL/Autosave + + + + + + + /Settings + + + /DomainConfiguration + + + eTemporarilyPermitOutgoing + + + UL/Settings + UL/DomainConfiguration + + + + + + + /Settings + + + /LabelDictionary + + + eTemporarilyPermitOutgoing + + + UL/Settings + UL/LabelDictionary + + + + + + + / + eLayered + App + /PACKAGES/egon_angular/src/app/* + ** + none + eCreateOneFilledFromFilePattern + + + /Import + /Autosave + /Export + /Render + /DomainConfiguration + /Replay + /StoryCreator + /LabelDictionary + /ElementRegistry + /TitleAndDescription + /Settings + /Modeler + /Common + /App + /PACKAGES + + + + + U/ + + + + + + + /PACKAGES + /App + + egon_angular/src/main.ts + + egon_angular/src/polyfills.ts + + egon_angular/src/test.ts + + + + UL/App + + + + + + + /PACKAGES + /App + + ** + + + + UL/App + + + + + + + /Common/egon_angular/src/app/common/util/testHelpers.ts + + + /Replay/egon_angular/src/app/replay/domain/replayStep.ts + + + eTemporarilyPermitOutgoing + + + ULCCCCCF/Common/egon_angular/src/app/common/util/testHelpers.ts + ULCCCCCF/Replay/egon_angular/src/app/replay/domain/replayStep.ts + + + + + + + /Common/egon_angular/src/app/common/util/testHelpers.ts + + + /Modeler/egon_angular/src/app/domain-story-modeler-module/modeler/domain + + + eTemporarilyPermitOutgoing + + + ULCCCCCF/Common/egon_angular/src/app/common/util/testHelpers.ts + ULCCCCCC/Modeler/egon_angular/src/app/domain-story-modeler-module/modeler/domain + + + + + + + /Common/egon_angular/src/app/common/util/typeCheck.ts + + + /Modeler/egon_angular/src/app/domain-story-modeler-module/modeler/domain + + + eTemporarilyPermitOutgoing + + + ULCCCCCF/Common/egon_angular/src/app/common/util/typeCheck.ts + ULCCCCCC/Modeler/egon_angular/src/app/domain-story-modeler-module/modeler/domain + + + + + + + /Modeler + + + /TitleAndDescription + + + eTemporarilyPermitOutgoing + + + UL/Modeler + UL/TitleAndDescription + + + + + + + /Modeler + + + /ElementRegistry + + + eTemporarilyPermitOutgoing + + + UL/Modeler + UL/ElementRegistry + + + + + + + /Modeler + + + /LabelDictionary + + + eTemporarilyPermitOutgoing + + + UL/Modeler + UL/LabelDictionary + + + + + + + /Modeler + + + /Replay + + + eTemporarilyPermitOutgoing + + + UL/Modeler + UL/Replay + + + + + + + /Modeler + + + /DomainConfiguration + + + eTemporarilyPermitOutgoing + + + UL/Modeler + UL/DomainConfiguration + + + + + + + / + + + /App + /Import + /Autosave + /Export + /Render + /LabelDictionary + /DomainConfiguration + /Replay + /StoryCreator + /ElementRegistry + /TitleAndDescription + /Settings + /Modeler + /Common + /PACKAGES + + + + + + + /StoryCreator/egon_angular/src/app/storyCreator/service/story-creator.service.ts + + + /Replay/egon_angular/src/app/replay/domain/replayStep.ts + + + eTemporarilyPermitOutgoing + + + ULCCCCCF/StoryCreator/egon_angular/src/app/storyCreator/service/story-creator.service.ts + ULCCCCCF/Replay/egon_angular/src/app/replay/domain/replayStep.ts + + + + + + + + + + + + diff --git a/egon_angular.ts2sotoxml b/egon_angular.ts2sotoxml new file mode 100644 index 00000000..627268a1 --- /dev/null +++ b/egon_angular.ts2sotoxml @@ -0,0 +1,8 @@ + + tsconfig.json + dist/egon_angular-sotoData.xml + .*[.]spec[.]ts + .*/test/spec/.* + .*testHelpers[.]ts + .*test[.]ts + diff --git a/images/archive.png b/images/archive.png deleted file mode 100644 index 94d06461729f3d3acb0cd8932d9bc6e6f8b766fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8LpHcuDFkP61Pmp5`A3Sek?_&>6H zSI+|u%|(-6Fmz31&zy7kn$pzf8y0Q7zFPCw7D(vvJ5Km>z5cG@mEDrki#D1HTg@s` zp1IrTnX|H<$~TXo2QG^g7cjaDl`q;li@j573+u}7^Uh2xThfy|F-c5>{YCYK>UxH) zA|;_0swM;-ikJ`p$2)-R8&C{nzxDU4KGCGLBvdR!iFMY!Gcz095|k0wldT1B8K8ji-xaNCjiE#G3?>o~ETde=1V` zH!Ctd2>mtTV4oHnYKlDm$hHsCTajR=&Iqi0u?YdM+$akghP` ba${szQ@KJY(q*PH&>ak(u6{1-oD!M|k0wldT1B8LpaZeY=kP60R1X|{Hu@&s|&Ag-FGDXro&V_2U(SdKn8~3KLrKrI|Wt)y~N<@>gTe~DWM4f DxdmAD diff --git a/images/play.png b/images/play.png deleted file mode 100644 index e9c288c991550ebfb609a82f85a1ff8e4a11f4f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8r>Bc!NCji^0XDaT8U~A|Io3<; zlH9Q(@j|`Ap5qU^Seq9V7&ddXvK@Sw-4@}+>vUi)PuCR5mWFsqFNqnN#vF|2Cr#G) zm)v~8#c`+O2N2QW;walJ7I=8UZk}~lINs>7>1Da>S2Pt$F=YO%a8hZ#WYUU>nc{&F pJqMI$1u=AH{1W@OI6;Jg!9HnCPgkS=OQ53|JYD@<);T3K0RXaJLVW-L diff --git a/images/previous.png b/images/previous.png deleted file mode 100644 index d89c76ff9bfc6bb68a7a529d696fc1089b72d41e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8yQhm|NCo5D%L^qBIf$@4G&D3U zywbqN&+4Fjfg^-L)PZ%2Ag|dZwt|}O3aPEyN_kvAj^2%qTDw!d<;VR4wv4$mCvca} z`KcrxWu)}P$=&WmtC)>I(L&q&Cr-BEEioBqxm6d4p66k)oz4>S_Rn#?`ufrj{6@NsP&lWjRWlKf^|U1-_6+qhk#aZnup#1$i1&JUF5;R` zVs2eWBmcxN19wFfI@%QR0Ba7!Zv<7I7ZD5^+NZmqhFWu8VlBgQp@k0mu9i2Tp0} zgui0nNXa7+_qB9e#1BQa7b2!w`X~*%V!45_Iv1sJ+YOnQ=I*I^BI2E*wtX?Px-=6J zmr)to6LCS^wumi@j#rt&f?L&t>aL2I)G}|DXZTP(sBYk=h>gQ!*3DH9Quk2AGr&qi zrqRfbvAPv++hx{#6*J?08BUr=Ej4VNDO2ATQbRjkGH_az>X9i^-^|k0wldT1B8K;lBbJfNCjiE#G3?>o~HjT4^J3n oTv-sOV diff --git a/images/unarchive.png b/images/unarchive.png deleted file mode 100644 index c05764df5c5ce402fd40d85a05ae62f32a960e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmV= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "requires": { + "is-what": "^3.12.0" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", + "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "core-js": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", + "dev": true + }, + "core-js-compat": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", + "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "critters": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", + "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css": "^3.0.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", + "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", + "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", + "dev": true, + "requires": { + "camelcase": "^6.2.0", + "cssesc": "^3.0.0", + "icss-utils": "^5.0.0", + "loader-utils": "^2.0.0", + "postcss": "^8.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + }, + "dependencies": { + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/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" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.2.tgz", + "integrity": "sha512-8JK3EnPsjQsULme9/e5M2hF564f/480hwsdcHvQ7ZtAIMfQ1O3SCfs+b8Mjf5KJxhYApyRshR2QSovEJi2K72Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "cssnano-preset-default": "^5.0.1", + "is-resolvable": "^1.1.0" + } + }, + "cssnano-preset-default": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", + "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.1", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diagram-js": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-7.3.1.tgz", + "integrity": "sha512-Z4upYM5JbJc29LPp6r+g6x3/CIDDw7bRtYl/HItdippix/atrIx8PZKCtJTGB2NTYGzTWb3GAj7E/oLD0i5C4Q==", + "requires": { + "css.escape": "^1.5.1", + "didi": "^5.2.1", + "hammerjs": "^2.0.1", + "inherits": "^2.0.4", + "min-dash": "^3.5.2", + "min-dom": "^3.1.3", + "object-refs": "^0.3.0", + "path-intersection": "^2.2.1", + "tiny-svg": "^2.2.2" + } + }, + "diagram-js-direct-editing": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/diagram-js-direct-editing/-/diagram-js-direct-editing-1.6.3.tgz", + "integrity": "sha512-OwDpK4cNJ4QYuV855HvtZcB9/krfZRQ80uaE6bwaKbyb4584sD7nCtR5yWOyhJx4dIh1gMoqhF7d7G57M4tQVQ==", + "requires": { + "min-dash": "^3.5.2", + "min-dom": "^3.1.3" + } + }, + "didi": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/didi/-/didi-5.2.1.tgz", + "integrity": "sha512-IKNnajUlD4lWMy/Q9Emkk7H1qnzREgY4UyE3IhmOi/9IKua0JYtYldk928bOdt1yNxN8EiOy1sqtSozEYsmjCg==" + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domify": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/domify/-/domify-1.4.1.tgz", + "integrity": "sha512-x18nuiDHMCZGXr4KJSRMf/TWYtiaRo6RX8KN9fEbW54mvbQ6pieUuerC2ahBg+kEp1wycFj8MPUI0WkIOw5E9w==" + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", + "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.756", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.756.tgz", + "integrity": "sha512-WsmJym1TMeHVndjPjczTFbnRR/c4sbzg8fBFtuhlb2Sru3i/S1VGpzDSrv/It8ctMU2bj8G7g7/O3FzYMGw6eA==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dev": true, + "requires": { + "base64-arraybuffer": "0.1.4" + } + }, + "enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, - "@sinonjs/commons": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", - "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { - "type-detect": "4.0.8" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, - "@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, "requires": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, - "@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "requires": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==" - }, - "@sphinxxxx/color-conversion": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/component-emitter": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", - "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "@types/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", - "dev": true + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } }, - "@types/mime-types": { + "fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "@types/node": { - "version": "15.12.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", - "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==", + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "reusify": "^1.0.4" } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "websocket-driver": ">=0.5.1" } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } } } }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "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" + "to-regex-range": "^5.0.1" } }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", "dev": true }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "readable-stream": "^2.0.0" }, "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "util": "0.10.3" + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" }, "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "inherits": "2.0.1" + "safe-buffer": "~5.1.0" } } } }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "astral-regex": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "optional": true }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "array-filter": "^1.0.0" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" }, "dependencies": { - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } } } }, - "babel-eslint": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "object.assign": "^4.1.0" + "pump": "^3.0.0" } }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "assert-plus": "^1.0.0" } }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", - "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" - }, - "dependencies": { - "core-js-compat": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", - "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "semver": "7.0.0" - } - }, - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "is-glob": "^4.0.1" } }, - "babelify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "base64id": { + "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" } }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" + "function-bind": "^1.1.1" } }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "ansi-regex": "^2.0.0" }, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, - "bpmn-js": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-8.7.0.tgz", - "integrity": "sha512-6CqpzO9HnlFDm7CWWKE6tFrQpC4s2PgHpmLPTmBkXrFs7FgentaGVaIUbU3SoRbthPucg3V0WewyvgZQRo1t6w==", - "requires": { - "bpmn-moddle": "^7.1.1", - "css.escape": "^1.5.1", - "diagram-js": "^7.3.0", - "diagram-js-direct-editing": "^1.6.3", - "ids": "^1.0.0", - "inherits": "^2.0.4", - "min-dash": "^3.5.2", - "min-dom": "^3.1.3", - "object-refs": "^0.3.0", - "tiny-svg": "^2.2.2" - } - }, - "bpmn-moddle": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-7.1.1.tgz", - "integrity": "sha512-R3xDuTklpK2NtxVDHJiecEVJvY2hKZikXdyl7oaULHMCQPfTBdid7TU/LGUgrLjA3L3ihBN9AKPgcAQ6HoPjpA==", - "requires": { - "min-dash": "^3.5.2", - "moddle": "^5.0.2", - "moddle-xml": "^9.0.5" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, - "browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "resolve": "^1.17.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-core-module": "^2.0.0", - "path-parse": "^1.0.6" + "is-buffer": "^1.1.5" } } } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify": { - "version": "16.5.2", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", - "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^2.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "browserify-cache-api": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz", - "integrity": "sha1-liR+hT8Gj9bg1FzHPwuyzZd47wI=", - "dev": true, - "requires": { - "async": "^1.5.2", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true }, - "browserify-cipher": { + "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "lru-cache": "^6.0.0" } }, - "browserify-incremental": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/browserify-incremental/-/browserify-incremental-3.1.1.tgz", - "integrity": "sha1-BxPLdYckemMqnwjPG9FpuHi2Koo=", + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { - "JSONStream": "^0.10.0", - "browserify-cache-api": "^3.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" }, "dependencies": { - "JSONStream": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.10.0.tgz", - "integrity": "sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA=", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "jsonparse": "0.0.5", - "through": ">=2.2.7 <3" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "jsonparse": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", - "dev": true + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { - "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" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true } } }, - "browserify-transform-tools": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz", - "integrity": "sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ=", + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { - "falafel": "^2.0.0", - "through": "^2.3.7" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" } }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "pako": "~1.0.5" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" }, "dependencies": { - "caniuse-lite": { - "version": "1.0.30001239", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz", - "integrity": "sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==", - "dev": true + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } }, - "electron-to-chromium": { - "version": "1.3.755", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.755.tgz", - "integrity": "sha512-BJ1s/kuUuOeo1bF/EM2E4yqW9te0Hpof3wgwBx40AWJE18zsD1Tqo0kr7ijnOc+lRsrlrqKPauJAHqaxOItoUA==", - "dev": true + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } } } }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "ms": "^2.0.0" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true + "ids": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ids/-/ids-1.0.0.tgz", + "integrity": "sha512-Zvtq1xUto4LttpstyOlFum8lKx+i1OmRfg+6A9drFS9iSZsDPMHG4Sof/qwNR4kCU7jBeWFPrY2ocHxiz7cCRw==" }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, - "cached-path-relative": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", - "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "minimatch": "^3.0.4" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", "dev": true }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/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-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + }, + "dependencies": { + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + } } }, - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "requires": { - "source-map": "0.5.x" + "has": "^1.0.3" } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "color-name": "1.1.3" + "is-extglob": "^2.1.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - }, - "dependencies": { - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", - "dev": true - } + "is-path-inside": "^2.1.0" } }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "dev": true, "requires": { - "graceful-readlink": ">= 1.0.0" + "path-is-inside": "^1.0.2" } }, - "component-event": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.1.4.tgz", - "integrity": "sha1-PeePwoeCOBeH4kvyp8U2vwFCybQ=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "isobject": "^3.0.1" } }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" } }, - "connect-livereload": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", - "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "constants-browserify": { + "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "is-docker": "^2.0.0" } }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", "dev": true }, - "core-js-compat": { - "version": "3.4.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.8.tgz", - "integrity": "sha512-l3WTmnXHV2Sfu5VuD7EHE2w7y+K68+kULKt5RJg8ZJk3YhHF1qLD4O8v8AmNq+8vbOwnPFFDvds25/AoEvMqlQ==", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { - "browserslist": "^4.8.2", + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" }, "dependencies": { - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30001239", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz", - "integrity": "sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.755", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.755.tgz", - "integrity": "sha512-BJ1s/kuUuOeo1bF/EM2E4yqW9te0Hpof3wgwBx40AWJE18zsD1Tqo0kr7ijnOc+lRsrlrqKPauJAHqaxOItoUA==", - "dev": true - }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - } - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -3832,1617 +8424,1767 @@ } } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "object-assign": "^4", - "vary": "^1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", "dev": true, "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "jasmine-core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "colors": "1.4.0" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz", + "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==", "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "date-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz", - "integrity": "sha1-GIdtC9pMGf5w3Tv0sDTygbEqQLY=", - "dev": true, - "requires": { - "time-zone": "^0.1.0" - } + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "type-detect": "^4.0.0" + "minimist": "^1.2.5" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "object-keys": "^1.0.12" + "graceful-fs": "^4.1.6" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "karma": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.1.2.tgz", + "integrity": "sha512-mKbxgsJrt3UHBPdKfCxC2eg3lpqyt6hQRFhNWJ2sk0wUnbnLPEiCpgIgiycuLSra0vC6TaK9OPJiMGATGzgH/A==", "dev": true, "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", "dev": true - } - } - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diagram-js": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-7.3.0.tgz", - "integrity": "sha512-giDlLWNCOtYTmcdU5UfVmvOhsGy/HFxsWwNhb3rrPpDw8ammONK0KkC4H9M808hszWSWOKcZnUJOkows+WcifA==", - "requires": { - "css.escape": "^1.5.1", - "didi": "^5.2.1", - "hammerjs": "^2.0.1", - "inherits": "^2.0.4", - "min-dash": "^3.5.2", - "min-dom": "^3.1.3", - "object-refs": "^0.3.0", - "path-intersection": "^2.2.1", - "tiny-svg": "^2.2.2" - } - }, - "diagram-js-direct-editing": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/diagram-js-direct-editing/-/diagram-js-direct-editing-1.6.3.tgz", - "integrity": "sha512-OwDpK4cNJ4QYuV855HvtZcB9/krfZRQ80uaE6bwaKbyb4584sD7nCtR5yWOyhJx4dIh1gMoqhF7d7G57M4tQVQ==", - "requires": { - "min-dash": "^3.5.2", - "min-dom": "^3.1.3" - } - }, - "didi": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/didi/-/didi-5.2.1.tgz", - "integrity": "sha512-IKNnajUlD4lWMy/Q9Emkk7H1qnzREgY4UyE3IhmOi/9IKua0JYtYldk928bOdt1yNxN8EiOy1sqtSozEYsmjCg==" - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true } } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "which": "^1.2.1" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domify": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/domify/-/domify-1.4.1.tgz", - "integrity": "sha512-x18nuiDHMCZGXr4KJSRMf/TWYtiaRo6RX8KN9fEbW54mvbQ6pieUuerC2ahBg+kEp1wycFj8MPUI0WkIOw5E9w==" - }, - "dot": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", - "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "karma-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", + "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.1", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "minimatch": "^3.0.4" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "karma-jasmine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "jasmine-core": "^3.6.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "karma-jasmine-html-reporter": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", "dev": true }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "source-map-support": "^0.5.5" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", "dev": true }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true }, - "engine.io": { + "less": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", - "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" + "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", + "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^1.10.0" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "optional": true, "requires": { - "ms": "2.1.2" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, - "engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "less-loader": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, "requires": { - "base64-arraybuffer": "0.1.4" + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "license-webpack-plugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", + "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", "dev": true, "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "immediate": "~3.0.5" } }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "p-locate": "^4.1.0" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/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" - } - }, - "debug": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-glob": "^4.0.1" - }, - "dependencies": { - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } + "color-name": "~1.1.4" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, - "eslint-plugin-bpmn-io": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-bpmn-io/-/eslint-plugin-bpmn-io-0.10.0.tgz", - "integrity": "sha512-u+ix+eNbenO0+7SbZL2rmT/InrRn4Scg80XBq4jvS2PfaIHc2eZe32UwArxrgseHWOI/YurtrGaGfNhBgILt4g==", + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", "dev": true, "requires": { - "babel-eslint": "^10.0.2", - "eslint-plugin-mocha": "^6.0.0", - "eslint-plugin-react": "^7.14.3" + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" } }, - "eslint-plugin-mocha": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.1.tgz", - "integrity": "sha512-o3Ibhpczi5MjUVpnlnrpC/+oJYGoHKB5m4bQdRnaAOeFCN3HRkqBisQ2/h0hEuCR4lPxyHP1Qzyjpna8MsOdlA==", + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "ramda": "^0.26.1" + "yallist": "^4.0.0" } }, - "eslint-plugin-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1", - "object.entries": "^1.1.0", - "object.fromentries": "^2.0.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.2", - "resolve": "^1.12.0" + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" }, "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } } } }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "object-visit": "^1.0.0" } }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "matches-selector": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-1.2.0.tgz", + "integrity": "sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA==" + }, + "material-design-icons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", + "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" }, "dependencies": { - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "esquery": { + "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", - "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, - "events": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", - "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", - "dev": true + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "dependencies": { + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + } + } }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "mime-db": "1.47.0" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, + "min-dash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.7.0.tgz", + "integrity": "sha512-IlEbbItQU7tipoa4aAWocSuhR76jKqQG/N2+/Mh7d+BLZ3UmQl57ppKhziPY/TXBGps9+M8BC1c7AzqcYLp5BA==" + }, + "min-dom": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/min-dom/-/min-dom-3.1.3.tgz", + "integrity": "sha512-Lbi1NZjLV9Hg6/bEe2Lfk2Fzsv1MwheR61whqTLP+FxLndYo9TxpksEgM5Kr1khjfCtFTMr0waeEfwIpStkRdw==", "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "component-event": "^0.1.4", + "domify": "^1.3.1", + "indexof": "0.0.1", + "matches-selector": "^1.2.0" } }, - "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "mini-css-extract-plugin": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", + "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", "dev": true, "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" }, "dependencies": { - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "pend": "~1.2.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } } } }, - "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "acorn": "^5.0.0", - "foreach": "^2.0.5", - "isarray": "0.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } + "brace-expansion": "^1.1.7" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", - "dev": true + "minipass-fetch": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.4.tgz", + "integrity": "sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "minipass": "^3.0.0" } }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "minipass": "^3.0.0" } }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", - "dev": true + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { - "glob": "~5.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-plain-object": "^2.0.4" } } } }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "moddle": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/moddle/-/moddle-5.0.2.tgz", + "integrity": "sha512-nBEyKt7sDw6MlM6e85lTCEXButw+p7hubEoRo/JyX+dBzDcGjDoktPuby9QE+ylW1ABZqNvRy8pK0h+23tIW2g==", "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "min-dash": "^3.0.0" } }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true + "moddle-xml": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-9.0.5.tgz", + "integrity": "sha512-1t9N35ZMQZTYZmRDoh1mBVd0XwLB34BkBywNJ0+YlLLYxaDBjFR/I+fqwsY746ayYPBz6yNRg8JpLyFgNF+eHg==", + "requires": { + "min-dash": "^3.5.2", + "moddle": "^5.0.2", + "saxen": "^8.1.2" + } }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "is-buffer": "~2.0.3" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" }, "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" } }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, - "follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { - "for-in": "^1.0.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "ng-mocks": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-12.4.0.tgz", + "integrity": "sha512-ExgyNoVnnwOhfEd9EfhyS+md8tXj3ZCOL2p0Ilf2hn4XK9aLbd3ZNdw4IcY+2Vj+MPsKv0fsfgOgjAyoXSUelQ==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" }, "dependencies": { - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + } + } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", "dev": true }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "requires": { - "globule": "^1.0.0" + "abbrev": "1" } }, - "get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - } + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" } }, - "getobject": { + "npm-normalize-package-bin": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.1.tgz", - "integrity": "sha512-tj18lLe+917AACr6BdVoUuHnBPTVd9BEJp1vxnMZ58ztNvuxz9Ufa+wf3g37tlGITH35jggwZ2d9lcgHJJgXfQ==", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", "dev": true, "requires": { - "is-glob": "^4.0.1" - }, - "dependencies": { - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" } }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "type-fest": "^0.8.1" + "path-key": "^2.0.0" } }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } }, - "graceful-readlink": { + "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, - "grunt": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.1.tgz", - "integrity": "sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA==", - "dev": true, - "requires": { - "dateformat": "~3.0.3", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~0.3.0", - "glob": "~7.1.6", - "grunt-cli": "~1.4.2", - "grunt-known-options": "~2.0.0", - "grunt-legacy-log": "~3.0.0", - "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "mkdirp": "~1.0.4", - "nopt": "~3.0.6", - "rimraf": "~3.0.2" + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-descriptor": "^0.1.0" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" + "is-buffer": "^1.1.5" } } } }, - "grunt-browserify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/grunt-browserify/-/grunt-browserify-6.0.0.tgz", - "integrity": "sha512-m130pTVFEsxQZ+dJQd287TrnUI5VvEKJ+MmPjMF/7bVJBTBRWhJlYVFgBOYLZMUykfk1RWXfQ2sAQu5NuXumvg==", - "dev": true, - "requires": { - "async": "^2.5.0", - "browserify": "^17.0.0", - "browserify-incremental": "^3.1.1", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "resolve": "^1.1.6", - "watchify": "^4.0.0" - }, - "dependencies": { - "browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "dev": true, - "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/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" - } - } - } - }, - "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - } + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "grunt-cli": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", - "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-refs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/object-refs/-/object-refs-0.3.0.tgz", + "integrity": "sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } + "isobject": "^3.0.0" } }, - "grunt-contrib-clean": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", - "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "async": "^2.6.1", - "rimraf": "^2.6.2" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - } + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, - "grunt-contrib-connect": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-2.1.0.tgz", - "integrity": "sha512-yeCHdz5zqoibhQDyw/X+E/wTzYPpim+C2p+xYyXUsXVEkfxnKVIWYOWrAKkFHlz9//nIC0S3JbUDd3mVvJcxVA==", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "async": "^2.6.1", - "connect": "^3.6.6", - "connect-livereload": "^0.6.0", - "morgan": "^1.9.1", - "node-http2": "^4.0.1", - "opn": "^5.3.0", - "portscanner": "^2.2.0", - "serve-index": "^1.9.1", - "serve-static": "^1.13.2" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } + "isobject": "^3.0.1" } }, - "grunt-contrib-copy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, "requires": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" + "ee-first": "1.1.1" } }, - "grunt-contrib-watch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", - "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - } + "wrappy": "1" } }, - "grunt-copy-deps": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/grunt-copy-deps/-/grunt-copy-deps-1.4.0.tgz", - "integrity": "sha512-wiDG9oxdReva3Fy1PoUKwkNvJmuxy8zXQ7GvK69tjdetVite9xMhNEkh5uPzw0eQ0ciqDUkrqZ7TRfl+Dh6rrQ==", - "dev": true + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } }, - "grunt-known-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", - "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", - "dev": true + "open": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } }, - "grunt-legacy-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", - "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.19" + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } } }, - "grunt-legacy-log-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", - "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", + "ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "requires": { - "chalk": "~4.1.0", - "lodash": "~4.17.19" + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "dependencies": { "ansi-styles": { @@ -5496,917 +10238,890 @@ } } }, - "grunt-legacy-util": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", - "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", "dev": true, "requires": { - "async": "~3.2.0", - "exit": "~0.1.2", - "getobject": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.21", - "underscore.string": "~3.3.5", - "which": "~2.0.2" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "url-parse": "^1.4.3" } }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "aggregate-error": "^3.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "retry": "^0.12.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "pacote": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "dev": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "hat": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz", - "integrity": "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo=", + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse5": "^6.0.1" } }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "html-minifier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", - "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-intersection": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-intersection/-/path-intersection-2.2.1.tgz", + "integrity": "sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { - "camel-case": "3.0.x", - "clean-css": "4.1.x", - "commander": "2.9.x", - "he": "1.1.x", - "ncname": "1.0.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.0.x" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - } + "pinkie": "^2.0.0" } }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "find-up": "^4.0.0" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } }, - "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, "requires": { - "agent-base": "5", - "debug": "4" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } } } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "ids": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ids/-/ids-1.0.0.tgz", - "integrity": "sha512-Zvtq1xUto4LttpstyOlFum8lKx+i1OmRfg+6A9drFS9iSZsDPMHG4Sof/qwNR4kCU7jBeWFPrY2ocHxiz7cCRw==" - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", "dev": true }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true + }, + "postcss-import": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", + "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", "dev": true, "requires": { - "source-map": "~0.5.3" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" } }, - "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "postcss-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { + "schema-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } }, - "insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" } }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" } }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", "dev": true, "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "postcss-value-parser": "^4.1.0" } }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "postcss-minify-gradients": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", + "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "cssnano-utils": "^2.0.1", + "is-color-stop": "^1.1.0", + "postcss-value-parser": "^4.1.0" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", "dev": true, "requires": { - "binary-extensions": "^2.0.0" + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-core-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", - "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", "dev": true, "requires": { - "has": "^1.0.3" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" } }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, - "is-fullwidth-code-point": { + "postcss-modules-scope": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", - "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", - "dev": true + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } }, - "is-glob": { + "postcss-modules-values": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "icss-utils": "^5.0.0" } }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", "dev": true }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", "dev": true, "requires": { - "lodash.isfinite": "^3.3.2" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", "dev": true, "requires": { - "isobject": "^3.0.1" + "postcss-value-parser": "^4.1.0" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", "dev": true, "requires": { - "has": "^1.0.1" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", "dev": true, "requires": { - "is-unc-path": "^1.0.0" + "postcss-value-parser": "^4.1.0" } }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" } }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", "dev": true, "requires": { - "unc-path-regex": "^0.1.2" + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } }, - "jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" } }, - "just-extend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", - "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==" - }, - "karma": { - "version": "6.3.4", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.4.tgz", - "integrity": "sha512-hbhRogUYIulfkBTZT7xoPrCYhRBnBoqbbL4fszWD0ReFGUxU+LYBr3dwKdAluaDQ/ynT9/7C+Lf7pPNW4gSx4Q==", - "dev": true, - "requires": { - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "colors": "^1.4.0", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.3.0", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^3.1.0", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.28", - "yargs": "^16.1.1" + "protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" }, "dependencies": { + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "color-convert": "^2.0.1" + "array-uniq": "^1.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "fill-range": "^7.0.1" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "color-convert": { @@ -6424,1071 +11139,693 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "glob": "^7.1.3" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", "dev": true }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "is-path-inside": "^1.0.0" } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-browserify": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/karma-browserify/-/karma-browserify-8.0.0.tgz", - "integrity": "sha512-aHJX4OU41dvpYwco2X4fi5ONwKDkV5i5FXqpGe6NAO8W98jJZPi2RJfl5vy7R6M6uhuYDw2sqF7Mh5GtW9bJKA==", - "dev": true, - "requires": { - "convert-source-map": "^1.1.3", - "hat": "^0.0.3", - "js-string-escape": "^1.0.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.0", - "os-shim": "^0.1.3" - } - }, - "karma-chai": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", - "integrity": "sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o=", - "dev": true - }, - "karma-firefox-launcher": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.3.0.tgz", - "integrity": "sha512-Fi7xPhwrRgr+94BnHX0F5dCl1miIW4RHnzjIGxF8GaIEp7rNqX7LSi7ok63VXs3PS/5MQaQMhGxw+bvD+pibBQ==", - "dev": true, - "requires": { - "is-wsl": "^2.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true - } - } - }, - "karma-mocha": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", - "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", - "dev": true, - "requires": { - "minimist": "^1.2.3" - } - }, - "karma-spec-reporter": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz", - "integrity": "sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=", - "dev": true, - "requires": { - "colors": "^1.1.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "liftup": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", - "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", - "dev": true, - "requires": { - "extend": "^3.0.2", - "findup-sync": "^4.0.0", - "fined": "^1.2.0", - "flagged-respawn": "^1.0.1", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.1", - "rechoir": "^0.7.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "fill-range": "^7.0.1" + "path-is-inside": "^1.0.1" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "glob": "^7.1.3" } }, - "findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" + "source-map": "^0.5.6" } }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "has": "^1.0.3" + "ansi-regex": "^2.0.0" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "webdriver-manager": { + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" } }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { - "is-number": "^7.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", - "dev": true - }, - "load-grunt-tasks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-5.1.0.tgz", - "integrity": "sha512-oNj0Jlka1TsfDe+9He0kcA1cRln+TMoTsEByW7ij6kyktNLxBKJtslCFEvFrLC2Dj0S19IWJh3fOCIjLby2Xrg==", + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "arrify": "^2.0.1", - "multimatch": "^4.0.0", - "pkg-up": "^3.1.0", - "resolve-pkg": "^2.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" }, "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", - "dev": true - }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "chalk": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/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" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "ms": "2.1.2" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, - "lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "matches-selector": { + "qjobs": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-1.2.0.tgz", - "integrity": "sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA==" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, - "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", - "dev": true, - "requires": { - "mime-db": "~1.38.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, - "min-dash": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.7.0.tgz", - "integrity": "sha512-IlEbbItQU7tipoa4aAWocSuhR76jKqQG/N2+/Mh7d+BLZ3UmQl57ppKhziPY/TXBGps9+M8BC1c7AzqcYLp5BA==" + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true }, - "min-dom": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/min-dom/-/min-dom-3.1.3.tgz", - "integrity": "sha512-Lbi1NZjLV9Hg6/bEe2Lfk2Fzsv1MwheR61whqTLP+FxLndYo9TxpksEgM5Kr1khjfCtFTMr0waeEfwIpStkRdw==", + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "requires": { - "component-event": "^0.1.4", - "domify": "^1.3.1", - "indexof": "0.0.1", - "matches-selector": "^1.2.0" + "safe-buffer": "^5.1.0" } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "dev": true, "requires": { - "minimist": "^1.2.5" + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true } } }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "mocha": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { + "schema-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } }, - "mocha-test-container-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mocha-test-container-support/-/mocha-test-container-support-0.2.0.tgz", - "integrity": "sha1-Av0maBMSuS2vS7yof/YJNXISzYU=", - "dev": true - }, - "moddle": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/moddle/-/moddle-5.0.2.tgz", - "integrity": "sha512-nBEyKt7sDw6MlM6e85lTCEXButw+p7hubEoRo/JyX+dBzDcGjDoktPuby9QE+ylW1ABZqNvRy8pK0h+23tIW2g==", + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, "requires": { - "min-dash": "^3.0.0" + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, - "moddle-xml": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-9.0.5.tgz", - "integrity": "sha512-1t9N35ZMQZTYZmRDoh1mBVd0XwLB34BkBywNJ0+YlLLYxaDBjFR/I+fqwsY746ayYPBz6yNRg8JpLyFgNF+eHg==", + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, "requires": { - "min-dash": "^3.5.2", - "moddle": "^5.0.2", - "saxen": "^8.1.2" + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" } }, - "module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "picomatch": "^2.2.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "dev": true }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" + "regenerate": "^1.4.0" } }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "xml-char-classes": "^1.0.0" + "@babel/runtime": "^7.8.4" } }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, - "nise": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", - "integrity": "sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA==", + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, "requires": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^4.1.0", - "path-to-regexp": "^1.7.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { - "lower-case": "^1.1.1" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" } }, - "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "jsesc": "~0.5.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } } }, - "node-http2": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/node-http2/-/node-http2-4.0.1.tgz", - "integrity": "sha1-Fk/1O13SLITwrxQrh3xerraAmVk=", - "dev": true, - "requires": { - "assert": "1.4.1", - "events": "1.1.1", - "https-browserify": "0.0.1", - "setimmediate": "^1.0.5", - "stream-browserify": "2.0.1", - "timers-browserify": "2.0.2", - "url": "^0.11.0", - "websocket-stream": "^5.0.1" + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "dependencies": { - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "timers-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", - "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } } } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/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" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/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" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7496,836 +11833,1086 @@ } } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "object-refs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/object-refs/-/object-refs-0.3.0.tgz", - "integrity": "sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==" + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "glob": "^7.1.3" } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "2.38.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", + "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", + "dev": true, + "requires": { + "fsevents": "~2.3.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" } }, - "object.entries": { + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "ret": "~0.1.10" } }, - "object.fromentries": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", - "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.32.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", + "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.15.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" }, "dependencies": { - "es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true } } }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "https-proxy-agent": "^2.2.1" }, "dependencies": { - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "es6-promisify": "^5.0.0" } }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "ms": "^2.1.1" } }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { - "has": "^1.0.3" + "agent-base": "^4.3.0", + "debug": "^3.1.0" } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxen": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.1.2.tgz", + "integrity": "sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==" + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "glob": "^7.1.3" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "os-tmpdir": "~1.0.1" } } } }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "dev": true, "requires": { - "isobject": "^3.0.1" + "node-forge": "^0.10.0" } }, - "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "lru-cache": "^6.0.0" } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", "dev": true, "requires": { - "ee-first": "1.1.1" + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { - "wrappy": "1" + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "randombytes": "^2.1.0" } }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "outpipe": { + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { - "shell-quote": "^1.4.2" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "p-try": "^2.0.0" + "kind-of": "^6.0.2" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "p-limit": "^2.0.0" + "shebang-regex": "^1.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "callsites": "^3.0.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } } }, - "parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "path-platform": "~0.11.15" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "socket.io": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" } }, - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-intersection": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-intersection/-/path-intersection-2.2.1.tgz", - "integrity": "sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", "dev": true }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "dev": true, "requires": { - "path-root-regex": "^0.1.0" + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" } }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "dev": true, "requires": { - "isarray": "0.0.1" + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } } } }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true + "socks-proxy-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.0.0.tgz", + "integrity": "sha512-FIgZbQWlnjVEQvMkylz64/rUggGtrKstPnx8OZyYFG0tAFR8CSBtpXxSwbFLHyeXFn/cunFL7MpuSOvDSOPo9g==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, - "pidtree": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", - "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "source-map-loader": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", + "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", "dev": true, "requires": { - "find-up": "^3.0.0" + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.6.1", + "whatwg-mimetype": "^2.3.0" }, "dependencies": { - "find-up": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "schema-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", - "dev": true - }, - "portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { - "is-finite": "^1.0.1", - "parse-ms": "^1.0.0", - "plur": "^1.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "puppeteer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.1.1.tgz", - "integrity": "sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg==", + "speed-measure-webpack-plugin": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", + "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", "dev": true, "requires": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" + "chalk": "^4.1.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "ms": "^2.1.1" + "color-convert": "^2.0.1" } }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "mime-db": "1.43.0" + "color-name": "~1.1.4" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "has-flag": "^4.0.0" } } } }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz", - "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { - "safe-buffer": "^5.1.0" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "minipass": "^3.1.1" } }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "dev": true }, - "raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "bytes": "1", - "string_decoder": "0.10" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } } } }, - "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==", + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { + "inherits": "~2.0.1", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" }, "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -8337,1454 +12924,1957 @@ } } }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", "dev": true, "requires": { - "picomatch": "^2.2.1" + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, - "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "resolve": "^1.9.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } }, - "requires-port": { + "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", "dev": true, "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", - "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", "dev": true, "requires": { - "resolve-from": "^5.0.0" + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" }, "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "stylus-loader": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", + "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", "dev": true, "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "fast-glob": "^3.2.4", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "glob": "^7.1.3" + "has-flag": "^3.0.0" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "svgo": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.4.0.tgz", + "integrity": "sha512-W25S1UUm9Lm9VnE0TvCzL7aso/NCzDEaXLaElCUO/KaVitw0+IBicSVfM1L1c0YHK5TOFh73yQ2naCpVHEQ/OQ==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "@trysound/sax": "0.1.1", + "colorette": "^1.2.2", + "commander": "^7.1.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.2", + "csso": "^4.2.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } } }, - "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { - "is-promise": "^2.1.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" } }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "terser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", "dev": true, "requires": { - "tslib": "^1.9.0" + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", - "dev": true + "terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "saxen": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.1.2.tgz", - "integrity": "sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==" - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" }, "dependencies": { - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "setprototypeof": { + "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "setimmediate": "^1.0.4" } }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-svg": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.2.tgz", + "integrity": "sha512-u6zCuMkDR/3VAh83X7hDRn/pi0XhwG2ycuNS0cTFtQjGdOG2tSvEb8ds65VeGWc3H6PUjJKeunueXqgkZqtMsg==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "dependencies": { - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - } + "os-tmpdir": "~1.0.2" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "json-stable-stringify": "~0.0.0", - "sha.js": "~2.4.4" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, - "shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "fast-safe-stringify": "^2.0.7" + "is-number": "^7.0.0" } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "ts-node": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", + "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", "dev": true, "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, - "sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", - "requires": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } + "safe-buffer": "^5.0.1" } }, - "socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, - "socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "media-typer": "0.3.0", + "mime-types": "~2.1.24" } }, - "sortablejs": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.13.0.tgz", - "integrity": "sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg==" + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "ua-parser-js": { + "version": "0.7.27", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.27.tgz", + "integrity": "sha512-eXMaRYK2skomGocoX0x9sBXzx5A1ZVQgXfrW4mTc8dT0zS7olEcyfudAzRC5tIIRgLxQ69B6jut3DI+n5hslPA==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "dev": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" } }, - "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "unique-slug": "^2.0.0" } }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "imurmurhash": "^0.1.4" } }, - "stream-http": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", - "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } } }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, - "stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "punycode": "^2.1.0" } }, - "streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, "requires": { - "date-format": "^2.1.0", - "debug": "^4.1.1", - "fs-extra": "^8.1.0" + "punycode": "1.3.2", + "querystring": "0.2.0" }, "dependencies": { - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true } } }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "inherits": "2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } } } }, - "string.prototype.padend": { + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-name": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" + "builtins": "^1.0.3" } }, - "string.prototype.trimend": { + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, + "optional": true, "requires": { - "safe-buffer": "~5.2.0" + "chokidar": "^2.1.8" }, "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/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" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/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", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/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" + } } } }, - "stringify": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/stringify/-/stringify-5.2.0.tgz", - "integrity": "sha1-8iux8xrBCwRk637mDxqp9x5UZRI=", - "dev": true, - "requires": { - "browserify-transform-tools": "^1.5.3", - "html-minifier": "3.5.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "minimalistic-assert": "^1.0.0" } }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "requires": { - "minimist": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "defaults": "^1.0.3" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", "dev": true, "requires": { - "acorn-node": "^1.2.0" + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" } }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", "dev": true, "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/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" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "find-up": "^3.0.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "time-grunt": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-2.0.0.tgz", - "integrity": "sha512-iQD2AeDYCAJrsPC/eUsfYZD9UT7TuBOmUIgFV5zeTQgRk6yLJKoc3aYR0gusJ0m+bG13B6qrDZ0SwPLe0/htHw==", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "date-time": "^1.1.0", - "figures": "^1.0.0", - "hooker": "^0.2.3", - "number-is-nan": "^1.0.0", - "pretty-ms": "^2.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" } - } - } - }, - "time-zone": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz", - "integrity": "sha1-Sncotqwo2w4Aj1FAQ/1VW9VXO0Y=", - "dev": true - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "dev": true, - "requires": { - "process": "~0.11.0" - } - }, - "tiny-lr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", - "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", - "dev": true, - "requires": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "ms": "^2.1.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } }, - "tiny-svg": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.2.tgz", - "integrity": "sha512-u6zCuMkDR/3VAh83X7hDRn/pi0XhwG2ycuNS0cTFtQjGdOG2tSvEb8ds65VeGWc3H6PUjJKeunueXqgkZqtMsg==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "dev": true, "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" }, "dependencies": { - "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, - "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "mime-db": "1.48.0" + "minimist": "^1.2.5" } } } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", - "dev": true - }, - "uglify-js": { - "version": "3.0.28", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.28.tgz", - "integrity": "sha512-0h/qGay016GG2lVav3Kz174F3T2Vjlz2v6HCt+WDQpoXfco0hWwF5gHK9yh88mUYvIC+N7Z8NT8WpjSp1yoqGA==", - "dev": true, - "requires": { - "commander": "~2.11.0", - "source-map": "~0.5.1" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - } - } - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, - "umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "requires": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", - "dev": true, - "requires": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { - "inherits": "2.0.3" + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vanilla-picker": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.11.2.tgz", - "integrity": "sha512-2cP7LlUnxHxwOf06ReUVtd2RFJMnJGaxN2s0p8wzBH3In5b00Le7fFZ9VrIoBE0svZkSq/BC/Pwq/k/9n+AA2g==", - "requires": { - "@sphinxxxx/color-conversion": "^2.2.2" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", - "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", - "dev": true, - "requires": { - "anymatch": "^3.1.0", - "browserify": "^17.0.0", - "chokidar": "^3.4.0", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^4.0.2", - "xtend": "^4.0.2" - }, - "dependencies": { - "browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "dev": true, - "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "remove-trailing-separator": "^1.0.1" } } } }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "is-extglob": "^2.1.0" } } } }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "readable-stream": "3" + "kind-of": "^3.0.2" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "is-buffer": "^1.1.5" } } } }, - "util": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", - "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" } }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", + "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } } } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -9794,19 +14884,11 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "websocket-stream": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.0.tgz", - "integrity": "sha512-EXy/zXb9kNHI07TIMz1oIUIrPZxQRA8aeJ5XYg5ihV8K4kD1DuA+FY6R96HfdIHzlSzS8HiISAfrm+vVQkZBug==", - "dev": true, - "requires": { - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "^3.2.0", - "xtend": "^4.0.0" - } + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "which": { "version": "1.3.1", @@ -9823,102 +14905,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -9961,12 +14947,52 @@ } } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", + "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -9984,15 +15010,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -10033,36 +15050,35 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "requires": { - "mkdirp": "^0.5.1" + "async-limiter": "~1.0.0" } }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" } }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -10071,6 +15087,18 @@ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", @@ -10116,6 +15144,31 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/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-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -10156,15 +15209,24 @@ } } }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "tslib": "^2.0.0" } } } diff --git a/package.json b/package.json index f6ff580e..98262e29 100644 --- a/package.json +++ b/package.json @@ -1,93 +1,54 @@ { - "name": "domain-story-modeler", - "version": "1.3.0-dev", - "description": "A tool to visualize Domain Stories in the browser", - "repository": { - "type": "git", - "url": "https://github.com/wps/domain-story-modeler.git" - }, + "name": "egon", + "version": "2.0.0-alpha", "scripts": { - "lint": "eslint .", - "auto-test": "npm test -- --auto-watch --no-single-run", - "test": "karma start", - "bundle": "grunt build", - "dev": "grunt auto-build", - "all": "run-s lint test bundle" - }, - "keywords": [ - "domain storytelling", - "process modeling", - "modeling", - "domain-driven design", - "ddd" - ], - "author": { - "name": "WPS", - "url": "https://wps.de" - }, - "contributors": [ - { - "name": "Domain Story Modeler contributors", - "url": "https://github.com/wps/domain-story-modeler" - } - ], - "license": "GPL-3.0-or-later", - "devDependencies": { - "@babel/core": "7.7.2", - "@babel/plugin-transform-runtime": "^7.14.5", - "@babel/polyfill": "7.12.1", - "@babel/preset-env": "7.7.1", - "babelify": "^10.0.0", - "browserify": "^16.5.1", - "chai": "^4.3.4", - "eslint": "^6.8.0", - "eslint-plugin-bpmn-io": "^0.10.0", - "grunt": "^1.4.1", - "grunt-browserify": "^6.0.0", - "grunt-cli": "^1.4.3", - "grunt-contrib-clean": "^2.0.0", - "grunt-contrib-connect": "^2.1.0", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-watch": "^1.1.0", - "grunt-copy-deps": "^1.4.0", - "karma": "^6.3.4", - "karma-browserify": "^8.0.0", - "karma-chai": "^0.1.0", - "karma-firefox-launcher": "^1.3.0", - "karma-mocha": "^2.0.1", - "karma-spec-reporter": "^0.0.32", - "load-grunt-tasks": "^5.1.0", - "mocha": "^6.2.3", - "mocha-test-container-support": "^0.2.0", - "npm-run-all": "^4.1.5", - "puppeteer": "^2.1.1", - "stringify": "^5.2.0", - "time-grunt": "^2.0.0", - "watchify": "^4.0.0" + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "formatter-check": "prettier --check .", + "formatter": "prettier --write .", + "e2e": "ng e2e" }, + "private": true, "dependencies": { - "bpmn-js": "^8.7.0", - "diagram-js": "^7.3.0", - "diagram-js-direct-editing": "^1.6.3", + "@angular/animations": "^12.2.3", + "@angular/cdk": "^12.2.3", + "@angular/common": "^12.2.3", + "@angular/compiler": "^12.2.3", + "@angular/core": "^12.2.3", + "@angular/forms": "^12.2.3", + "@angular/material": "^12.2.3", + "@angular/platform-browser": "^12.2.3", + "@angular/platform-browser-dynamic": "^12.2.3", + "@angular/router": "^12.2.3", + "bpmn-js": "^8.7.2", "dot": "^1.1.3", - "inherits": "2.0.4", - "jquery": "^3.6.0", + "jest-worker": "^27.1.0", + "material-design-icons": "^3.0.1", "min-dash": "^3.7.0", - "sinon": "^7.5.0", - "sortablejs": "^1.10.2", - "tiny-svg": "^2.2.2", - "vanilla-picker": "^2.11.0" + "ng-mocks": "^12.4.0", + "rxjs": "~6.6.0", + "tslib": "^2.3.1", + "zone.js": "~0.11.4" }, - "browserify": { - "transform": [ - [ - "babelify", - { - "presets": [ - "@babel/preset-env" - ] - } - ] - ] + "devDependencies": { + "@angular-devkit/build-angular": "^0.1102.14", + "@angular/cli": "^12.2.3", + "@angular/compiler-cli": "^12.2.3", + "@types/jasmine": "^3.8.2", + "@types/node": "^12.20.21", + "codelyzer": "^6.0.2", + "jasmine-core": "~3.6.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~6.1.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.0.3", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.7.0", + "protractor": "~7.0.0", + "ts-node": "~8.3.0", + "typescript": "4.3.5", + "prettier": "^2.4.1" } } diff --git a/app/logo/archive.png b/readme_images/archive.png similarity index 100% rename from app/logo/archive.png rename to readme_images/archive.png diff --git a/app/logo/forward.png b/readme_images/forward.png similarity index 100% rename from app/logo/forward.png rename to readme_images/forward.png diff --git a/images/gear.png b/readme_images/gear.png similarity index 100% rename from images/gear.png rename to readme_images/gear.png diff --git a/app/logo/image.png b/readme_images/image.png similarity index 100% rename from app/logo/image.png rename to readme_images/image.png diff --git a/images/keyboard.png b/readme_images/keyboard.png similarity index 100% rename from images/keyboard.png rename to readme_images/keyboard.png diff --git a/app/logo/play.png b/readme_images/play.png similarity index 100% rename from app/logo/play.png rename to readme_images/play.png diff --git a/app/logo/previous.png b/readme_images/previous.png similarity index 100% rename from app/logo/previous.png rename to readme_images/previous.png diff --git a/app/logo/spellcheck.png b/readme_images/spellcheck.png similarity index 100% rename from app/logo/spellcheck.png rename to readme_images/spellcheck.png diff --git a/app/logo/stop.png b/readme_images/stop.png similarity index 100% rename from app/logo/stop.png rename to readme_images/stop.png diff --git a/app/logo/unarchive.png b/readme_images/unarchive.png similarity index 100% rename from app/logo/unarchive.png rename to readme_images/unarchive.png diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 00000000..f3daf250 --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule], +}) +export class AppRoutingModule {} diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 00000000..2a0f2804 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1,53 @@ +
+ + +
+ + + + +
+ +
+ +
+
+ +
+
+ +
+
+
diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 00000000..84244e89 --- /dev/null +++ b/src/app/app.component.scss @@ -0,0 +1,81 @@ +.content { + height: 100%; +} + +#line { + padding: 2px; + position: relative; + right: 0; + left: 0; + width: 100%; + border-bottom: solid 2px #ccc; + margin-top: -5px; +} + +/* header and Canvas*/ + +.headerAndCanvas { + margin-top: 5px; + height: 100%; + width: 100%; + display: grid; + grid-template-rows: 125px 1px auto; +} + +.headerAndCanvasCollapsed { + margin-top: 5px; + height: 100%; + width: 100%; + display: grid; + grid-template-rows: 50px 1px auto; +} + +.settings { + height: 100%; +} + +.header { + display: grid; + margin-left: 5px; + grid-template-rows: 50px 75px; +} + +.headerCollapsed { + display: grid; + margin-left: 5px; + grid-template-rows: 50px; +} + +/* Logo Container */ + +.logoContainer { + position: absolute; + bottom: 45px; + right: 5px; +} + +#imgWPS { + margin-left: 17px; +} + +#imgWPS:hover, +#imgDST:hover { + cursor: pointer; +} + +.hidden { + display: none; +} + +#wrapper { + padding: 16px; + min-height: 100%; + height: 100%; + box-sizing: border-box; /*new*/ +} +#tab-group { + height: 100%; +} +#tab-group mat-tab-body { + flex-grow: 1; +} diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 00000000..02a2334b --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from 'src/app/app.component'; +import { MockService } from 'ng-mocks'; +import { SettingsService } from './settings-module/service/settings.service'; +import { DialogService } from './dialog/service/dialog.service'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [AppComponent], + providers: [ + { + provide: SettingsService, + useValue: MockService(SettingsService), + }, + { + provide: DialogService, + useValue: MockService(DialogService), + }, + ], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 00000000..e40786db --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit } from '@angular/core'; +import { SettingsService } from 'src/app/settings-module/service/settings.service'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { DialogService } from './dialog/service/dialog.service'; +import { MatDialogConfig } from '@angular/material/dialog'; +import { InfoDialogData } from './dialog/component/confirm-dialog/infoDialogData'; +import { InfoDialogComponent } from './dialog/component/confirm-dialog/info-dialog.component'; +import { TitleService } from './titleAndDescription/service/title.service'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'], +}) +export class AppComponent implements OnInit { + showSettingsSubscription: Observable | BehaviorSubject; + showDescription: Observable; + + constructor( + private settingsService: SettingsService, + private dialogService: DialogService, + private titleService: TitleService + ) { + this.showSettingsSubscription = new BehaviorSubject(false); + this.showDescription = new BehaviorSubject(true); + } + + ngOnInit(): void { + this.showDescription = this.titleService.getShowDescriptionObservable(); + this.showSettingsSubscription = this.settingsService.getShowSettings(); + } + + openLinkDialog(link: string, title: string, text: string): void { + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + + config.data = new InfoDialogData(title, text, true, true, link); + + this.dialogService.openDialog(InfoDialogComponent, config); + } +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 00000000..3f12c59a --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,96 @@ +import { ApplicationRef, DoBootstrap, NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { + MAT_CHECKBOX_DEFAULT_OPTIONS, + MatCheckboxDefaultOptions, + MatCheckboxModule, +} from '@angular/material/checkbox'; + +import { AppRoutingModule } from 'src/app/app-routing.module'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { HeaderComponent } from 'src/app/header/component/header.component'; +import { SettingsComponent } from 'src/app/settings-module/component/settings.component'; +import { AppComponent } from 'src/app/app.component'; +import { ExportService } from 'src/app/export/service/export.service'; +import { ImportDomainStoryService } from 'src/app/import-service/import-domain-story.service'; +import { ImportRepairService } from 'src/app/import-service/import-repair.service'; +import { ModelerService } from 'src/app/modeler/service/modeler.service'; +import { TitleService } from 'src/app/titleAndDescription/service/title.service'; +import { LabelDictionaryService } from 'src/app/label-dictionary/service/label-dictionary.service'; +import { ReplayService } from 'src/app/replay-service/replay.service'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; +import { MassNamingService } from 'src/app/label-dictionary/service/mass-naming.service'; +import { InfoDialogComponent } from 'src/app/dialog/component/confirm-dialog/info-dialog.component'; +import { ExportDialogComponent } from 'src/app/export/component/export-dialog/export-dialog.component'; +import { ActivityDialogComponent } from 'src/app/modeler/component/activity-dialog/activity-dialog.component'; +import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; +import { MatInputModule } from '@angular/material/input'; +import { HeaderDialogComponent } from 'src/app/header/header-dialog/header-dialog.component'; +import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; +import { ModelerComponent } from 'src/app/modeler/component/modeler.component'; +import { SettingsModule } from 'src/app/settings-module/settings.module'; +import { MatTabsModule } from '@angular/material/tabs'; +import { AutosaveService } from './autosave/service/autosave.service'; +import { TitleComponent } from './titleAndDescription/title/component/title.component'; +import { DescriptionComponent } from './titleAndDescription/description/component/description.component'; +import { DomainStoryModelerModuleModule } from './modeler/domain-story-modeler-module.module'; +import { MatButtonModule } from '@angular/material/button'; + +@NgModule({ + declarations: [ + HeaderComponent, + SettingsComponent, + AppComponent, + InfoDialogComponent, + ExportDialogComponent, + ActivityDialogComponent, + HeaderDialogComponent, + ModelerComponent, + TitleComponent, + DescriptionComponent, + ], + imports: [ + BrowserModule, + AppRoutingModule, + NoopAnimationsModule, + MatDialogModule, + MatFormFieldModule, + MatCheckboxModule, + MatInputModule, + MatTabsModule, + ReactiveFormsModule, + SettingsModule, + DomainStoryModelerModuleModule, + MatButtonModule, + ], + providers: [ + AutosaveService, + ExportService, + ImportDomainStoryService, + ImportRepairService, + IconDictionaryService, + TitleService, + LabelDictionaryService, + ReplayService, + ElementRegistryService, + DomainConfigurationService, + ModelerService, + MassNamingService, + FormBuilder, + { + provide: MAT_CHECKBOX_DEFAULT_OPTIONS, + useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions, + }, + ], + entryComponents: [AppComponent], +}) +export class AppModule implements DoBootstrap { + ngDoBootstrap(app: ApplicationRef): void { + const componentElement = document.createElement('app-root'); + document.body.append(componentElement); + app.bootstrap(AppComponent); + } +} diff --git a/src/app/autosave/autosave-settings-component/autosave-settings.component.html b/src/app/autosave/autosave-settings-component/autosave-settings.component.html new file mode 100644 index 00000000..69c230dd --- /dev/null +++ b/src/app/autosave/autosave-settings-component/autosave-settings.component.html @@ -0,0 +1,21 @@ +
+

Autosave Enabled

+ +
+
+

Autosave Interval

+ +
+ +
+ {{ autosave.date }} + +
diff --git a/src/app/autosave/autosave-settings-component/autosave-settings.component.scss b/src/app/autosave/autosave-settings-component/autosave-settings.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/autosave/autosave-settings-component/autosave-settings.component.spec.ts b/src/app/autosave/autosave-settings-component/autosave-settings.component.spec.ts new file mode 100644 index 00000000..813f1bb4 --- /dev/null +++ b/src/app/autosave/autosave-settings-component/autosave-settings.component.spec.ts @@ -0,0 +1,36 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutosaveSettingsComponent } from './autosave-settings.component'; +import { MockService } from 'ng-mocks'; +import { AutosaveService } from '../service/autosave.service'; +import { AutosaveStateService } from '../service/autosave-state.service'; + +describe('AutosaveSettingsComponent', () => { + let component: AutosaveSettingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [AutosaveSettingsComponent], + providers: [ + { + provide: AutosaveService, + useValue: MockService(AutosaveService), + }, + { + provide: AutosaveStateService, + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AutosaveSettingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/autosave/autosave-settings-component/autosave-settings.component.ts b/src/app/autosave/autosave-settings-component/autosave-settings.component.ts new file mode 100644 index 00000000..b5dde57e --- /dev/null +++ b/src/app/autosave/autosave-settings-component/autosave-settings.component.ts @@ -0,0 +1,54 @@ +import { Component, OnInit } from '@angular/core'; +import { AutosaveService } from '../service/autosave.service'; +import { Autosave } from '../domain/autosave'; +import { Observable } from 'rxjs'; +import { AutosaveStateService } from '../service/autosave-state.service'; + +@Component({ + selector: 'app-autosave-settings', + templateUrl: './autosave-settings.component.html', + styleUrls: ['./autosave-settings.component.scss'], +}) +export class AutosaveSettingsComponent implements OnInit { + autosaves: Autosave[] = []; + autosaveIntervalObservable: Observable; + autosaveEnabledObservable: Observable; + + constructor( + private autosaveService: AutosaveService, + private autosaveStateService: AutosaveStateService + ) { + this.autosaveIntervalObservable = + this.autosaveService.getAutosaveIntervalAsObservable(); + this.autosaveEnabledObservable = + this.autosaveStateService.getAutosaveStateAsObservable(); + } + + ngOnInit(): void { + this.autosaves = this.autosaveService.loadCurrentAutosaves(); + this.autosaveIntervalObservable = + this.autosaveService.getAutosaveIntervalAsObservable(); + this.autosaveEnabledObservable = + this.autosaveStateService.getAutosaveStateAsObservable(); + } + + public applyAutosave(autosave: Autosave): void { + this.autosaveService.applyAutosave(autosave); + } + + public changeAutosaveInterval(interval: number): void { + this.autosaveService.changeAutosaveInterval(interval); + } + + setInterval($event: any): void { + this.autosaveService.changeAutosaveInterval($event.target.value); + } + + setAutosaveState(): void { + if (!this.autosaveStateService.getAutosaveState()) { + this.autosaveService.startAutosaving(); + } else { + this.autosaveService.stopAutosaving(); + } + } +} diff --git a/src/app/autosave/domain/autosave.ts b/src/app/autosave/domain/autosave.ts new file mode 100644 index 00000000..896adea4 --- /dev/null +++ b/src/app/autosave/domain/autosave.ts @@ -0,0 +1,6 @@ +import { ConfigAndDST } from '../../export/domain/configAndDst'; + +export interface Autosave { + configAndDST: ConfigAndDST; + date: string; +} diff --git a/src/app/autosave/domain/autosaves.ts b/src/app/autosave/domain/autosaves.ts new file mode 100644 index 00000000..3985e372 --- /dev/null +++ b/src/app/autosave/domain/autosaves.ts @@ -0,0 +1,5 @@ +import { Autosave } from './autosave'; + +export interface Autosaves { + autosaves: Autosave[]; +} diff --git a/src/app/autosave/service/autosave-state.service.spec.ts b/src/app/autosave/service/autosave-state.service.spec.ts new file mode 100644 index 00000000..25356064 --- /dev/null +++ b/src/app/autosave/service/autosave-state.service.spec.ts @@ -0,0 +1,41 @@ +import { TestBed } from '@angular/core/testing'; + +import { AutosaveStateService } from './autosave-state.service'; + +describe('AutosaveStateService', () => { + let service: AutosaveStateService; + + let setItemSpy: jasmine.Spy; + let getItemSpy: jasmine.Spy; + + beforeEach(() => { + TestBed.configureTestingModule({}); + + getItemSpy = spyOn(localStorage, 'getItem').and.returnValue('false'); + setItemSpy = spyOn(localStorage, 'setItem').and.returnValue(); + + getItemSpy.and.returnValue(false); + + service = TestBed.inject(AutosaveStateService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should initialize disabled', () => { + expect(service.getAutosaveState()).toBeFalse(); + service + .getAutosaveStateAsObservable() + .subscribe((value) => expect(value).toBeFalse()); + }); + + it('should set state', () => { + service.setAutosaveState(true); + + expect(service.getAutosaveState()).toBeTrue(); + service + .getAutosaveStateAsObservable() + .subscribe((value) => expect(value).toBeTrue()); + }); +}); diff --git a/src/app/autosave/service/autosave-state.service.ts b/src/app/autosave/service/autosave-state.service.ts new file mode 100644 index 00000000..48baf93b --- /dev/null +++ b/src/app/autosave/service/autosave-state.service.ts @@ -0,0 +1,41 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; + +const autosaveActivatedTag = 'autosaveActivatedTag'; + +@Injectable({ + providedIn: 'root', +}) +export class AutosaveStateService { + private autosaveEnabled = new BehaviorSubject(false); + + constructor() { + this.readAutosaveState(); + } + + private readAutosaveState(): void { + const storedAutosafeState = this.isAutosaveEnabled(); + this.autosaveEnabled.next(storedAutosafeState); + } + + public setAutosaveState(enabled: boolean): void { + this.setAutosaveEnabled(enabled); + this.autosaveEnabled.next(enabled); + } + + public getAutosaveStateAsObservable(): Observable { + return this.autosaveEnabled.asObservable(); + } + + public getAutosaveState(): boolean { + return this.autosaveEnabled.getValue(); + } + + private setAutosaveEnabled(enabled: boolean): void { + localStorage.setItem(autosaveActivatedTag, JSON.stringify(enabled)); + } + + private isAutosaveEnabled(): boolean { + return JSON.parse(localStorage.getItem(autosaveActivatedTag) || 'false'); + } +} diff --git a/src/app/autosave/service/autosave.service.spec.ts b/src/app/autosave/service/autosave.service.spec.ts new file mode 100644 index 00000000..f688819f --- /dev/null +++ b/src/app/autosave/service/autosave.service.spec.ts @@ -0,0 +1,172 @@ +import { TestBed } from '@angular/core/testing'; + +import { AutosaveService } from './autosave.service'; +import { MockService } from 'ng-mocks'; +import { RendererService } from '../../renderer-service/renderer.service'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { ExportService } from '../../export/service/export.service'; +import { AutosaveStateService } from './autosave-state.service'; +import { Autosave } from '../domain/autosave'; +import { testConfigAndDst } from '../../export/domain/configAndDst'; +import { deepCopy } from '../../common/util/deepCopy'; +import { BehaviorSubject } from 'rxjs'; +import { Autosaves } from '../domain/autosaves'; + +describe('AutosaveService', () => { + let service: AutosaveService; + + let rendererServiceSpy: jasmine.SpyObj; + let autosaveStateSpy: jasmine.SpyObj; + + let setItemSpy: jasmine.Spy; + let getItemSpy: jasmine.Spy; + + beforeEach(() => { + const renderServiceMock = jasmine.createSpyObj('RendererService', [ + 'importStory', + ]); + const autosaveStateServiceMock = jasmine.createSpyObj( + 'AutosaveStateService', + ['getAutosaveStateAsObservable', 'getAutosaveState', 'setAutosaveState'] + ); + + TestBed.configureTestingModule({ + providers: [ + { + provide: RendererService, + useValue: renderServiceMock, + }, + { + provide: DomainConfigurationService, + useValue: MockService(DomainConfigurationService), + }, + { + provide: ExportService, + useValue: MockService(ExportService), + }, + { + provide: AutosaveStateService, + useValue: autosaveStateServiceMock, + }, + ], + }); + rendererServiceSpy = TestBed.inject( + RendererService + ) as jasmine.SpyObj; + autosaveStateSpy = TestBed.inject( + AutosaveStateService + ) as jasmine.SpyObj; + + autosaveStateSpy.getAutosaveStateAsObservable.and.returnValue( + new BehaviorSubject(false).asObservable() + ); + autosaveStateSpy.getAutosaveState.and.returnValue(false); + autosaveStateSpy.setAutosaveState.and.returnValue(); + + service = TestBed.inject(AutosaveService); + + getItemSpy = spyOn(localStorage, 'getItem').and.returnValue('false'); + setItemSpy = spyOn(localStorage, 'setItem').and.returnValue(); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should not autostart when deactivated', () => { + service + .getAutosaveEnabledAsObservable() + .subscribe((value) => expect(value).toBeFalse()); + }); + + // TODO test for activated autostart + + describe('applyAutosave', () => { + beforeEach(() => { + rendererServiceSpy.importStory.and.returnValue(); + }); + + it('should call rendererService.importStory', () => { + service.applyAutosave( + createEmptyAutosave(Date.now().toString().slice(0, 25)) + ); + expect(rendererServiceSpy.importStory).toHaveBeenCalled(); + }); + }); + + describe('changeAutosaveInterval', () => { + it('', () => { + service.changeAutosaveInterval(10); + + expect(setItemSpy).toHaveBeenCalledWith('autosaveIntervalTag', '10'); + service + .getAutosaveIntervalAsObservable() + .subscribe((value) => expect(value).toEqual(10)); + }); + }); + + describe('start & stop Autosaving', () => { + it('should setAutosaveState true when starting', () => { + service.startAutosaving(); + expect(autosaveStateSpy.setAutosaveState).toHaveBeenCalledWith(true); + }); + + it('should setAutosaveState false when stopping', () => { + service.stopAutosaving(); + expect(autosaveStateSpy.setAutosaveState).toHaveBeenCalledWith(false); + }); + }); + + it('getAutosaveEnabledAsObservable', () => { + service + .getAutosaveEnabledAsObservable() + .subscribe((value) => expect(value).toBeFalse()); + }); + + it('getAutosaveIntervalAsObservable', () => { + service + .getAutosaveIntervalAsObservable() + .subscribe((value) => expect(value).toEqual(5)); + }); + + describe('loadCurrentAutosaves', () => { + const autosaves: Autosaves = { autosaves: [] }; + + beforeEach(() => { + autosaves.autosaves = [ + createEmptyAutosave( + Date.UTC(2000, 1, 1, 1, 1, 1).toString().slice(0, 25) + ), + createEmptyAutosave(Date.now().toString().slice(0, 25)), + ]; + }); + + it('should getItem from local Storage', () => { + getItemSpy.and.returnValue(JSON.stringify({ autosaves: [] })); + const loadedAutosaves = service.loadCurrentAutosaves(); + + expect(getItemSpy).toHaveBeenCalledWith('autosaveTag'); + expect(loadedAutosaves).toEqual([]); + }); + + it('should return sorted autosaves', () => { + getItemSpy.and.returnValue(JSON.stringify(autosaves)); + + const loadedAutosaves = service.loadCurrentAutosaves(); + + expect(getItemSpy).toHaveBeenCalled(); + expect(loadedAutosaves).toEqual(autosaves.autosaves); + }); + }); + + afterEach(() => { + service.stopAutosaving(); + }); + + function createEmptyAutosave(date: string): Autosave { + return { + configAndDST: deepCopy(testConfigAndDst), + date, + }; + } +}); diff --git a/src/app/autosave/service/autosave.service.ts b/src/app/autosave/service/autosave.service.ts new file mode 100644 index 00000000..d0ac88fd --- /dev/null +++ b/src/app/autosave/service/autosave.service.ts @@ -0,0 +1,138 @@ +import { Injectable } from '@angular/core'; +import { RendererService } from '../../renderer-service/renderer.service'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { ExportService } from '../../export/service/export.service'; +import { Autosave } from '../domain/autosave'; +import { Autosaves } from '../domain/autosaves'; +import { AutosaveStateService } from './autosave-state.service'; +import { BehaviorSubject, Observable } from 'rxjs'; + +const autosaveIntervalTag = 'autosaveIntervalTag'; +const autosaveTag = 'autosaveTag'; +const maxAutosaves = 5; + +@Injectable({ + providedIn: 'root', +}) +export class AutosaveService { + private readonly autosaveEnabled: Observable; + private autosaveTimer: any; + private autosaveInterval = new BehaviorSubject(5); // in min + + constructor( + private rendererService: RendererService, + private domainConfigurationService: DomainConfigurationService, + private exportService: ExportService, + private autosaveStateService: AutosaveStateService + ) { + this.autosaveEnabled = + this.autosaveStateService.getAutosaveStateAsObservable(); + this.loadAutosaveInterval(); + if (this.autosaveStateService.getAutosaveState()) { + this.startTimer(); + } + } + + public applyAutosave(autosave: Autosave): void { + const config = JSON.parse(autosave.configAndDST.domain); + const story = JSON.parse(autosave.configAndDST.dst); + this.rendererService.importStory(story, true, config, false); + } + + public changeAutosaveInterval(interval: number): void { + this.autosaveInterval.next(interval); + this.saveAutosaveInterval(); + if (this.autosaveEnabled) { + this.stopTimer(); + this.startTimer(); + } + } + + public startAutosaving(): void { + this.autosaveStateService.setAutosaveState(true); + this.startTimer(); + } + + public stopAutosaving(): void { + this.autosaveStateService.setAutosaveState(false); + this.stopTimer(); + } + + public getAutosaveIntervalAsObservable(): Observable { + return this.autosaveInterval.asObservable(); + } + + public getAutosaveEnabledAsObservable(): Observable { + return this.autosaveEnabled; + } + + private createAutosave(): Autosave { + const dst = JSON.stringify(this.rendererService.getStory()); + const configAndDST = this.exportService.createConfigAndDST(dst); + + const date = new Date().toString().slice(0, 25); + + return { + configAndDST, + date, + }; + } + + private stopTimer(): void { + clearInterval(this.autosaveTimer); + } + + private startTimer(): void { + // @ts-ignore + this.autosaveTimer = new setInterval(() => { + const currentAutosaves = this.loadCurrentAutosaves(); + if (currentAutosaves.length > maxAutosaves) { + currentAutosaves.pop(); + } + currentAutosaves.unshift(this.createAutosave()); + this.saveAutosaves(currentAutosaves); + }, this.autosaveInterval.getValue() * 60000); + } + + private saveAutosaves(autosaves: Autosave[]): void { + localStorage.setItem(autosaveTag, JSON.stringify({ autosaves })); + } + + public loadCurrentAutosaves(): Autosave[] { + const autosavesString = localStorage.getItem(autosaveTag); + if (autosavesString) { + const autosaves = (JSON.parse(autosavesString) as Autosaves).autosaves; + if (autosaves && autosaves.length > 0) { + this.sortAutosaves(autosaves); + return autosaves; + } + } + return []; + } + + private sortAutosaves(autosaves: Autosave[]): void { + autosaves.sort((a: Autosave, b: Autosave) => { + const aDate = Date.parse(a.date); + const bDate = Date.parse(b.date); + + if (aDate > bDate) { + return 0; + } + return 1; + }); + } + + private loadAutosaveInterval(): void { + const autosaveIntervalString = localStorage.getItem(autosaveIntervalTag); + if (autosaveIntervalString) { + this.autosaveInterval.next(JSON.parse(autosaveIntervalString)); + } + } + + private saveAutosaveInterval(): void { + localStorage.setItem( + autosaveIntervalTag, + '' + this.autosaveInterval.getValue() + ); + } +} diff --git a/src/app/common/domain/activityBusinessObject.ts b/src/app/common/domain/activityBusinessObject.ts new file mode 100644 index 00000000..37f0f282 --- /dev/null +++ b/src/app/common/domain/activityBusinessObject.ts @@ -0,0 +1,24 @@ +import { BusinessObject, testBusinessObject } from './businessObject'; +import { Waypoint } from './waypoint'; +import { elementTypes } from './elementTypes'; + +export interface ActivityBusinessObject extends BusinessObject { + number: number | undefined; + + waypoints: Waypoint[] | undefined; + + source: BusinessObject | undefined; + target: BusinessObject | undefined; +} + +export const testActivityBusinessobject: ActivityBusinessObject = { + ...testBusinessObject, + + number: undefined, + waypoints: undefined, + + type: elementTypes.ACTIVITY, + + source: undefined, + target: undefined, +}; diff --git a/src/app/common/domain/activityCanvasObject.ts b/src/app/common/domain/activityCanvasObject.ts new file mode 100644 index 00000000..9a44f4e1 --- /dev/null +++ b/src/app/common/domain/activityCanvasObject.ts @@ -0,0 +1,28 @@ +import { CanvasObject, testCanvasObject } from './canvasObject'; +import { Waypoint } from './waypoint'; +import { + ActivityBusinessObject, + testActivityBusinessobject, +} from './activityBusinessObject'; +import { elementTypes } from './elementTypes'; + +export interface ActivityCanvasObject extends CanvasObject { + source: CanvasObject | undefined; + target: CanvasObject | undefined; + + waypoints: Waypoint[] | undefined; + businessObject: ActivityBusinessObject; +} + +export const testActivityCanvasObject: ActivityCanvasObject = { + ...testCanvasObject, + + source: undefined, + target: undefined, + + type: elementTypes.ACTIVITY, + + waypoints: undefined, + + businessObject: testActivityBusinessobject, +}; diff --git a/src/app/common/domain/businessObject.ts b/src/app/common/domain/businessObject.ts new file mode 100644 index 00000000..2b300bac --- /dev/null +++ b/src/app/common/domain/businessObject.ts @@ -0,0 +1,39 @@ +import { elementTypes } from './elementTypes'; + +export interface BusinessObject { + $descriptor: any; + $type: any; + di: any; + get: any; + set: any; + + id: string; + name: string; + + type: string; + + x: number; + y: number; + height: number | undefined; + width: number | undefined; + pickedColor: string | undefined; +} + +export const testBusinessObject: BusinessObject = { + $descriptor: undefined, + $type: undefined, + di: undefined, + get: undefined, + set: undefined, + + id: 'test', + name: 'test', + + type: elementTypes.WORKOBJECT, + + x: 0, + y: 0, + height: 38, + width: 38, + pickedColor: undefined, +}; diff --git a/src/app/common/domain/canvasObject.ts b/src/app/common/domain/canvasObject.ts new file mode 100644 index 00000000..ba35d25e --- /dev/null +++ b/src/app/common/domain/canvasObject.ts @@ -0,0 +1,52 @@ +import { + BusinessObject, + testBusinessObject, +} from 'src/app/common/domain/businessObject'; +import { RootObject, testRoot } from 'src/app/common/domain/rootObject'; +import { ActivityCanvasObject } from './activityCanvasObject'; +import { elementTypes } from './elementTypes'; + +export interface CanvasObject { + attachers: any; + host: any; + label: any; + labels: any[]; + + parent: CanvasObject | RootObject; + businessObject: BusinessObject; + incoming: ActivityCanvasObject[] | undefined; + outgoing: ActivityCanvasObject[] | undefined; + + id: string; + type: string; + height: number; + width: number; + x: number; + y: number; + name: string; + text: string | undefined; + + pickedColor: string | undefined; +} + +export const testCanvasObject: CanvasObject = { + attachers: undefined, + host: undefined, + label: undefined, + labels: [], + + parent: testRoot, + businessObject: testBusinessObject, + incoming: [], + outgoing: [], + id: 'test', + type: elementTypes.WORKOBJECT, + height: 38, + width: 38, + x: 0, + y: 0, + name: 'test', + text: undefined, + + pickedColor: undefined, +}; diff --git a/src/app/common/domain/configuration.ts b/src/app/common/domain/configuration.ts new file mode 100644 index 00000000..d070fd6b --- /dev/null +++ b/src/app/common/domain/configuration.ts @@ -0,0 +1,9 @@ +export class Configuration { + public actors: string[]; + public workObjects: string[]; + + public constructor(actors: string[], workObjects: string[]) { + this.actors = actors; + this.workObjects = workObjects; + } +} diff --git a/src/app/common/domain/dictionary/dictionary.spec.ts b/src/app/common/domain/dictionary/dictionary.spec.ts new file mode 100644 index 00000000..4658dc20 --- /dev/null +++ b/src/app/common/domain/dictionary/dictionary.spec.ts @@ -0,0 +1,120 @@ +import { Dictionary, Entry } from './dictionary'; + +const key1 = 'key'; +const key2 = 'another key'; + +const value1 = 'value'; +const value2 = 'another value'; + +const testObject = { + key: value1, +}; + +describe('Dict', () => { + it('should create empty Dictionary', () => { + // when + const dict = new Dictionary(); + + // then + expect(dict).toBeTruthy(); + expect(dict.length).toEqual(0); + expect(dict.size()).toEqual(0); + }); + + it('should add Entries', () => { + // given + const dict = new Dictionary(); + + // when + dict.add(value1, key1); + dict.set(key2, value2); + + // then + expect(dict.length === 2); + expect(dict.get(key1)).toEqual(value1); + expect(dict.get(key2)).toEqual(value2); + expect(dict.has(key1)).toBeTruthy(); + expect(dict.has(key2)).toBeTruthy(); + }); + + it('should put Entry', () => { + // given + const dict1 = new Dictionary(); + const entry = new Entry(value1, key1); + + // when + dict1.putEntry(entry); + + // then + expect(dict1.has(key1)).toBeTruthy(); + expect(dict1.get(key1)).toEqual(value1); + }); + + it('should add Each', () => { + // given + const dict1 = new Dictionary(); + + // when + dict1.addEach(testObject); + + // then + expect(dict1.has(key1)).toBeTruthy(); + }); + + it('should append Dict', () => { + // given + const dict1 = new Dictionary(); + const dict2 = new Dictionary(); + + dict1.set(key1, value1); + + // when + dict2.appendDict(dict1); + + // then + expect(dict2.get(key1)).toEqual(dict1.get(key1)); + }); + + it('should get keysArray', () => { + // given + const dict1 = new Dictionary(); + + dict1.set(key1, value1); + + // when + const keys = dict1.keysArray(); + + // then + expect(keys.length === 1); + expect(keys[0]).toEqual(key1); + }); + + it('should delete entries', () => { + // given + const dict1 = new Dictionary(); + + dict1.set(key1, value1); + dict1.set(key2, value2); + + // when + dict1.delete(key1); + + // then + expect(dict1.length === 1); + expect(dict1.get(key1)).toBeFalsy(); + expect(dict1.get(key2)).toBeTruthy(); + }); + + it('should clear dict', () => { + // given + const dict1 = new Dictionary(); + + dict1.set(key1, value1); + + // when + dict1.clear(); + + // then + expect(dict1.length === 0).toBeTruthy(); + }); +}); diff --git a/src/app/common/domain/dictionary/dictionary.ts b/src/app/common/domain/dictionary/dictionary.ts new file mode 100644 index 00000000..fbd5ab16 --- /dev/null +++ b/src/app/common/domain/dictionary/dictionary.ts @@ -0,0 +1,80 @@ +export class Dictionary { + private entries: Entry[]; + + constructor() { + this.entries = []; + } + + get length(): number { + return this.entries.length; + } + + all(): Entry[] { + return this.entries; + } + + size(): number { + return this.entries.length; + } + + isEmpty(): boolean { + return this.entries.length <= 0; + } + + has(key: string): boolean { + return this.entries.some((entry) => entry.key === key); + } + + set(key: string, value: any): void { + if (!this.has(key)) { + this.entries.push(new Entry(value, key)); + } + } + + add(value: any, key: string): void { + this.set(key, value); + } + + putEntry(entry: Entry): void { + if (!this.has(entry.key)) { + this.entries.push(new Entry(entry.value, entry.key)); + } + } + + keysArray(): string[] { + return this.entries.map((entry) => entry.key); + } + + addEach(object: any): void { + Object.keys(object).forEach((key) => { + this.set(key, object[key]); + }); + } + + appendDict(dict: Dictionary): void { + dict.entries.forEach((entry) => this.putEntry(entry)); + } + + clear(): void { + this.entries = []; + } + + delete(key: string): void { + this.entries = this.entries.filter((entry) => entry.key !== key); + } + + get(key: string): any { + const found = this.entries.filter((entry) => entry.key === key); + return found[0] ? found[0].value : null; + } +} + +export class Entry { + public value: any; + public key: string; + + constructor(value: any, key: string) { + this.value = value; + this.key = key; + } +} diff --git a/src/app/common/domain/domainConfiguration.ts b/src/app/common/domain/domainConfiguration.ts new file mode 100644 index 00000000..c2c204fc --- /dev/null +++ b/src/app/common/domain/domainConfiguration.ts @@ -0,0 +1,5 @@ +export interface DomainConfiguration { + name: string; + actors: { [key: string]: any }; + workObjects: { [key: string]: any }; +} diff --git a/src/app/common/domain/elementTypes.ts b/src/app/common/domain/elementTypes.ts new file mode 100644 index 00000000..989a6f2f --- /dev/null +++ b/src/app/common/domain/elementTypes.ts @@ -0,0 +1,9 @@ +export enum elementTypes { + ACTIVITY = 'domainStory:activity', + CONNECTION = 'domainStory:connection', + ACTOR = 'domainStory:actor', + WORKOBJECT = 'domainStory:workObject', + GROUP = 'domainStory:group', + TEXTANNOTATION = 'domainStory:textAnnotation', + DOMAINSTORY = 'domainStory:', +} diff --git a/src/app/common/domain/groupBusinessObject.ts b/src/app/common/domain/groupBusinessObject.ts new file mode 100644 index 00000000..70af02fa --- /dev/null +++ b/src/app/common/domain/groupBusinessObject.ts @@ -0,0 +1,11 @@ +import { BusinessObject, testBusinessObject } from './businessObject'; + +export interface GroupBusinessObject extends BusinessObject { + children: string[]; +} + +export const testGroupBusinessObject: GroupBusinessObject = { + ...testBusinessObject, + + children: [], +}; diff --git a/src/app/common/domain/groupCanvasObject.ts b/src/app/common/domain/groupCanvasObject.ts new file mode 100644 index 00000000..485dfd2c --- /dev/null +++ b/src/app/common/domain/groupCanvasObject.ts @@ -0,0 +1,19 @@ +import { CanvasObject, testCanvasObject } from './canvasObject'; +import { + GroupBusinessObject, + testGroupBusinessObject, +} from './groupBusinessObject'; +import { elementTypes } from './elementTypes'; + +export interface GroupCanvasObject extends CanvasObject { + businessObject: GroupBusinessObject; + children: CanvasObject[] | undefined; +} + +export const testGroupCanvasObject: GroupCanvasObject = { + ...testCanvasObject, + type: elementTypes.GROUP, + + businessObject: testGroupBusinessObject, + children: [], +}; diff --git a/src/app/common/domain/iconConfiguration.ts b/src/app/common/domain/iconConfiguration.ts new file mode 100644 index 00000000..f927f90f --- /dev/null +++ b/src/app/common/domain/iconConfiguration.ts @@ -0,0 +1,191 @@ +import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; +import { overrideAppendedIcons } from 'src/app/domain-configuration/domain/allIcons'; +import { Configuration } from 'src/app/common/domain/configuration'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; + +export class IconConfiguration { + public domainName = 'default'; + + private allIconDictionary: Dictionary; + + public constructor(allIconDictionary: Dictionary) { + this.allIconDictionary = allIconDictionary; + } + + /** + * Select the Iconset which you want to use + */ + public getDefaultConf(): Configuration { + return defaultConf; + } + + public updateAllIconRegistry(allIconDictionary: Dictionary): void { + this.allIconDictionary = allIconDictionary; + } + + public appendSRCFile( + actors: string[], + actorsDict: Dictionary, + workObjects: string[], + workObjectsDict: Dictionary + ): void { + const newAppendedIcons: { [key: string]: any } = {}; + + actors.forEach((name: string) => { + if (!this.allIconDictionary.has(name)) { + newAppendedIcons[name] = actorsDict.get(name); + } + }); + + workObjects.forEach((name: string) => { + if (!this.allIconDictionary.has(name)) { + newAppendedIcons[name] = workObjectsDict.get(name); + } + }); + const appen = new Dictionary(); + Object.keys(newAppendedIcons).forEach((key) => { + appen.set(key, newAppendedIcons[key]); + }); + + overrideAppendedIcons(appen); + } + + public createCustomConf( + includeNecessary: boolean, + domainConfiguration: DomainConfiguration + ): Configuration { + this.domainName = domainConfiguration.name; + + let actors = domainConfiguration.actors; + let workObjects = domainConfiguration.workObjects; + + const actorDict = new Dictionary(); + const workObjectDict = new Dictionary(); + + actorDict.addEach(actors); + workObjectDict.addEach(workObjects); + + let actorKeys = actorDict.keysArray(); + let workObjectKeys = workObjectDict.keysArray(); + + if (includeNecessary) { + defaultConf.actors.forEach((actor) => { + actors.push(actor); + }); + defaultConf.workObjects.forEach((workObject) => { + workObjects.push(workObject); + }); + } + this.appendSRCFile(actorKeys, actorDict, workObjectKeys, workObjectDict); + + return new Configuration(actorKeys, workObjectKeys); + } +} +/* eslint no-unused-vars: 0*/ + +/** + * All Icons as one Set + * There are more Icons than fit in the palette. + * This is just for reference + */ + +const allIconsConf = { + actors: ['Person', 'Group', 'System', 'Pet'], + workObjects: [ + 'Place', + 'Flag', + 'World', + 'Water', + 'Store', + 'Theater', + 'Business', + 'Meeting-room', + 'Hotel', + 'Dining', + 'Courthouse', + 'Gas-station', + 'Car', + 'Bus', + 'Train', + 'Truck', + 'Taxi', + 'Bike', + 'Boat', + 'Motorcycle', + 'Plane', + 'Flight-takeoff', + 'Flight-landing', + 'Shuttle', + 'Walking', + 'Traffic', + 'Commute', + 'Document', + 'Folder', + 'Call', + 'Email', + 'Copyright', + 'Briefcase', + 'Attach', + 'Ruler', + 'Sum', + 'Conversation', + 'Update', + 'Cellphone', + 'Speaker-phone', + 'Signal', + 'Key', + 'Pencil', + 'How-To-Reg', + 'Settings', + 'Grid', + 'Label', + 'Receipt', + 'Calendar', + 'Wrench', + 'Headset', + 'Keyboard', + 'Mouse', + 'Microphone', + 'Router', + 'Scanner', + 'Printer', + 'DNS', + 'Security', + 'Cloud', + 'Desktop', + 'Tablet', + 'Assessment', + 'Dashboard', + 'Pie-chart', + 'View-List', + 'Euro', + 'Dollar', + 'Info', + 'Alarm', + 'Problem', + 'Circle-Arrows', + 'Picture-as-PDF', + 'Credit-Card', + 'Shopping', + 'Favorite', + 'Gavel', + 'Blind', + 'Hourglass', + 'Time', + 'Search', + 'Thumb-up', + 'Thumb-down', + 'Thumb-up-down', + 'Couch', + 'Education', + 'Watch', + ], +}; + +/** + * Default Iconset + */ +export const defaultConf = { + actors: ['Person', 'Group', 'System'], + workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'], +}; diff --git a/src/app/common/domain/rootObject.ts b/src/app/common/domain/rootObject.ts new file mode 100644 index 00000000..2bfdbc41 --- /dev/null +++ b/src/app/common/domain/rootObject.ts @@ -0,0 +1,12 @@ +import { CanvasObject } from 'src/app/common/domain/canvasObject'; + +export interface RootObject { + children: CanvasObject[]; + // id is always_ __implicitroot + id: string; +} + +export const testRoot: RootObject = { + children: [], + id: '__implicitroot', +}; diff --git a/src/app/common/domain/waypoint.ts b/src/app/common/domain/waypoint.ts new file mode 100644 index 00000000..c7304b58 --- /dev/null +++ b/src/app/common/domain/waypoint.ts @@ -0,0 +1,8 @@ +export interface Waypoint { + x: number; + y: number; + original: { + x: number; + y: number; + }; +} diff --git a/src/app/common/util/deepCopy.ts b/src/app/common/util/deepCopy.ts new file mode 100644 index 00000000..1037a969 --- /dev/null +++ b/src/app/common/util/deepCopy.ts @@ -0,0 +1,39 @@ +export function deepCopy(obj: any): any { + let copy; + + // Handle the 3 simple types, and null or undefined + // tslint:disable-next-line:triple-equals + if (null == obj || 'object' != typeof obj) { + return obj; + } + + // Handle Date + if (obj instanceof Date) { + copy = new Date(); + copy.setTime(obj.getTime()); + return copy; + } + + // Handle Array + if (obj instanceof Array) { + copy = []; + for (let i = 0, len = obj.length; i < len; i++) { + copy[i] = deepCopy(obj[i]); + } + return copy; + } + + // Handle Object + if (obj instanceof Object) { + copy = {}; + for (const attr in obj) { + if (obj.hasOwnProperty(attr)) { + // @ts-ignore + copy[attr] = deepCopy(obj[attr]); + } + } + return copy; + } + + throw new Error("Unable to copy obj! Its type isn't supported."); +} diff --git a/src/app/common/util/mathExtensions.ts b/src/app/common/util/mathExtensions.ts new file mode 100644 index 00000000..06cc3b19 --- /dev/null +++ b/src/app/common/util/mathExtensions.ts @@ -0,0 +1,71 @@ +'use strict'; + +// convert rad to deg +export function degrees(radians: number): number { + return (radians * 180) / Math.PI; +} + +// calculate the angle between two points in 2D +export function angleBetween( + startPoint: Point, + endPoint: Point +): number | undefined { + let quadrant; + + // determine in which quadrant we are + if (startPoint.x <= endPoint.x) { + if (startPoint.y >= endPoint.y) { + quadrant = 0; + } // upper right quadrant + else { + quadrant = 3; + } // lower right quadrant + } else { + if (startPoint.y >= endPoint.y) { + quadrant = 1; + } // upper left Quadrant + else { + quadrant = 2; + } // lower left quadrant + } + + const adjacent = Math.abs(startPoint.y - endPoint.y); + const opposite = Math.abs(startPoint.x - endPoint.x); + + // since the arcus-tangens only gives values between 0 and 90, we have to adjust for the quadrant we are in + + if (quadrant === 0) { + return 90 - degrees(Math.atan2(opposite, adjacent)); + } + if (quadrant === 1) { + return 90 + degrees(Math.atan2(opposite, adjacent)); + } + if (quadrant === 2) { + return 270 - degrees(Math.atan2(opposite, adjacent)); + } + if (quadrant === 3) { + return 270 + degrees(Math.atan2(opposite, adjacent)); + } + return undefined; +} + +export function positionsMatch( + width: number, + height: number, + elementX: number, + elementY: number, + clickX: number, + clickY: number +): boolean { + if (clickX > elementX && clickX < elementX + width) { + if (clickY > elementY && clickY < elementY + height) { + return true; + } + } + return false; +} + +export class Point { + public y = 0; + public x = 0; +} diff --git a/src/app/common/util/naming.ts b/src/app/common/util/naming.ts new file mode 100644 index 00000000..d7d20d33 --- /dev/null +++ b/src/app/common/util/naming.ts @@ -0,0 +1,12 @@ +import { elementTypes } from 'src/app/common/domain/elementTypes'; + +export function getNameFromType(type: string): string { + if (type.includes(elementTypes.ACTOR)) { + return type.replace(elementTypes.ACTOR, ''); + } else if (type.includes(elementTypes.WORKOBJECT)) { + return type.replace(elementTypes.WORKOBJECT, ''); + } + + return ''; + // error Handling else throw new InvalidTypeError(type); +} diff --git a/src/app/common/util/sanitizer.ts b/src/app/common/util/sanitizer.ts new file mode 100644 index 00000000..8d522e94 --- /dev/null +++ b/src/app/common/util/sanitizer.ts @@ -0,0 +1,37 @@ +'use strict'; + +// sanitize user-Input to be Desktop-Filename safe +export function sanitizeForDesktop(str: string): string { + const map: { [key: string]: string } = { + '/': '', + '\\': '', + ':': '', + '*': '', + '?': '', + '"': '', + '<': '', + '>': '', + '|': '', + }; + const reg = /[/\\:*?"<>|]/gi; + return str ? str.replace(reg, (match) => map[match]) : ''; +} + +export function sanitizeIconName(name: string): string { + const map: { [key: string]: string } = { + '/': '', + '\\': '', + ':': '', + '*': '', + '?': '', + '"': '', + '<': '', + '>': '', + '|': '', + '(': '', + ')': '', + ' ': '-', + }; + const reg = /[/\\:*?"<>|() ]/gi; + return name ? name.replace(reg, (match) => map[match]) : ''; +} diff --git a/src/app/dialog/component/confirm-dialog/info-dialog.component.html b/src/app/dialog/component/confirm-dialog/info-dialog.component.html new file mode 100644 index 00000000..6314235f --- /dev/null +++ b/src/app/dialog/component/confirm-dialog/info-dialog.component.html @@ -0,0 +1,13 @@ +

{{ title }}

+ + + +
+ {{ linkText }} +
+ + + + diff --git a/src/app/dialog/component/confirm-dialog/info-dialog.component.scss b/src/app/dialog/component/confirm-dialog/info-dialog.component.scss new file mode 100644 index 00000000..5ff4263e --- /dev/null +++ b/src/app/dialog/component/confirm-dialog/info-dialog.component.scss @@ -0,0 +1,10 @@ +.readOnlyText { + border: none; + overflow: hidden; + resize: none; +} + +.content { + height: fit-content; + overflow: hidden; +} diff --git a/src/app/dialog/component/confirm-dialog/info-dialog.component.spec.ts b/src/app/dialog/component/confirm-dialog/info-dialog.component.spec.ts new file mode 100644 index 00000000..5dd39b11 --- /dev/null +++ b/src/app/dialog/component/confirm-dialog/info-dialog.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { InfoDialogComponent } from 'src/app/dialog/component/confirm-dialog/info-dialog.component'; + +xdescribe('InfoDialogComponent', () => { + let component: InfoDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [InfoDialogComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(InfoDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/dialog/component/confirm-dialog/info-dialog.component.ts b/src/app/dialog/component/confirm-dialog/info-dialog.component.ts new file mode 100644 index 00000000..4c9a80a9 --- /dev/null +++ b/src/app/dialog/component/confirm-dialog/info-dialog.component.ts @@ -0,0 +1,33 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { InfoDialogData } from 'src/app/dialog/component/confirm-dialog/infoDialogData'; + +@Component({ + selector: 'app-info-dialog', + templateUrl: './info-dialog.component.html', + styleUrls: ['./info-dialog.component.scss'], +}) +export class InfoDialogComponent implements OnInit { + title: string; + infoText: string; + showConfirmButton: boolean; + hasLink: boolean; + linkText: string; + + constructor( + private dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) data: InfoDialogData + ) { + this.title = data.title; + this.infoText = data.infoText; + this.showConfirmButton = !data.isInfo; + this.hasLink = data.isLink; + this.linkText = data.linkText || ''; + } + + ngOnInit(): void {} + + close(): void { + this.dialogRef.close(); + } +} diff --git a/src/app/dialog/component/confirm-dialog/infoDialogData.ts b/src/app/dialog/component/confirm-dialog/infoDialogData.ts new file mode 100644 index 00000000..91fa0126 --- /dev/null +++ b/src/app/dialog/component/confirm-dialog/infoDialogData.ts @@ -0,0 +1,21 @@ +export class InfoDialogData { + public title: string; + public infoText: string; + public isInfo: boolean; + public isLink: boolean; + public linkText: string | undefined; + + constructor( + title: string, + infoText: string, + isInfo: boolean, + isLink: boolean = false, + linkText?: string + ) { + this.title = title; + this.infoText = infoText; + this.isInfo = isInfo; + this.isLink = isLink; + this.linkText = linkText; + } +} diff --git a/src/app/dialog/service/dialog.service.spec.ts b/src/app/dialog/service/dialog.service.spec.ts new file mode 100644 index 00000000..4465a509 --- /dev/null +++ b/src/app/dialog/service/dialog.service.spec.ts @@ -0,0 +1,34 @@ +import { TestBed } from '@angular/core/testing'; + +import { DialogService } from 'src/app/dialog/service/dialog.service'; +import { MatDialog, MatDialogConfig } from '@angular/material/dialog'; +import { InfoDialogData } from '../component/confirm-dialog/infoDialogData'; +import { InfoDialogComponent } from '../component/confirm-dialog/info-dialog.component'; +import { MockModule } from 'ng-mocks'; + +xdescribe('DialogService', () => { + let service: DialogService; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [MockModule(MatDialog)], + }); + service = TestBed.inject(DialogService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('dialog should open', () => { + const config = new MatDialogConfig(); + + config.disableClose = false; + config.autoFocus = true; + + const title = 'Test'; + const text = 'Test.'; + config.data = new InfoDialogData(title, text, true); + service.openDialog(InfoDialogComponent, config); + }); +}); diff --git a/src/app/dialog/service/dialog.service.ts b/src/app/dialog/service/dialog.service.ts new file mode 100644 index 00000000..8405ecab --- /dev/null +++ b/src/app/dialog/service/dialog.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { MatDialog, MatDialogConfig } from '@angular/material/dialog'; +import { ComponentType } from '@angular/cdk/overlay'; + +@Injectable({ + providedIn: 'root', +}) +export class DialogService { + constructor(private matDialog: MatDialog) {} + + public openDialog(dialog: ComponentType, config: MatDialogConfig): void { + this.matDialog.open(dialog, config); + } +} diff --git a/src/app/dirtyFlag-service/dirty-flag.service.spec.ts b/src/app/dirtyFlag-service/dirty-flag.service.spec.ts new file mode 100644 index 00000000..c3183caa --- /dev/null +++ b/src/app/dirtyFlag-service/dirty-flag.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DirtyFlagService } from 'src/app/dirtyFlag-service/dirty-flag.service'; + +describe('DirtyFlagService', () => { + let service: DirtyFlagService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DirtyFlagService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/dirtyFlag-service/dirty-flag.service.ts b/src/app/dirtyFlag-service/dirty-flag.service.ts new file mode 100644 index 00000000..7a2f7555 --- /dev/null +++ b/src/app/dirtyFlag-service/dirty-flag.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class DirtyFlagService { + private isDirty = false; + private isDirtySubject = new BehaviorSubject(this.isDirty); + + constructor() {} + + public makeDirty(): void { + this.isDirty = true; + this.isDirtySubject.next(true); + } + + public makeClean(): void { + this.isDirty = false; + this.isDirtySubject.next(false); + } + + get dirty(): boolean { + return this.isDirty; + } + + get dirtySubject(): BehaviorSubject { + return this.isDirtySubject; + } +} diff --git a/src/app/domManipulation/domain/replayConstants.ts b/src/app/domManipulation/domain/replayConstants.ts new file mode 100644 index 00000000..28487c3e --- /dev/null +++ b/src/app/domManipulation/domain/replayConstants.ts @@ -0,0 +1,8 @@ +export const numberBackgroudColour = '#42aebb'; +export const numberColour = 'white'; +export const strokeWidth = '1.5'; + +export const highlightNumberBackgroudColour = 'orange'; +export const highlightNumberColour = 'black'; +export const highlightColour = 'black'; +export const highlightStrokeWidth = '4'; diff --git a/src/app/domManipulation/service/dom-manipulation.service.spec.ts b/src/app/domManipulation/service/dom-manipulation.service.spec.ts new file mode 100644 index 00000000..6b4b8100 --- /dev/null +++ b/src/app/domManipulation/service/dom-manipulation.service.spec.ts @@ -0,0 +1,66 @@ +import { TestBed } from '@angular/core/testing'; + +import { DomManipulationService } from 'src/app/domManipulation/service/dom-manipulation.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { preBuildTestStory } from '../../spec/testHelpers.spec'; + +describe('DomManipulationService', () => { + let domManipulationService: DomManipulationService; + + let elementRegistryServiceSpy: jasmine.SpyObj; + + beforeEach(() => { + const elementRegistryServiceMock = jasmine.createSpyObj( + 'ElementRegsitryService', + [ + 'getAllCanvasObjects', + 'getAllGroups', + 'getAllActivities', + 'getAllConnections', + ] + ); + + TestBed.configureTestingModule({ + providers: [ + { + provide: ElementRegistryService, + useValue: elementRegistryServiceMock, + }, + ], + }); + domManipulationService = TestBed.inject(DomManipulationService); + elementRegistryServiceSpy = TestBed.inject( + ElementRegistryService + ) as jasmine.SpyObj; + spyOn(document, 'querySelector').and.returnValue(null); + }); + + it('should be created', () => { + expect(domManipulationService).toBeTruthy(); + }); + + beforeEach(() => { + elementRegistryServiceSpy.getAllConnections.and.returnValue([]); + elementRegistryServiceSpy.getAllActivities.and.returnValue([]); + elementRegistryServiceSpy.getAllGroups.and.returnValue([]); + elementRegistryServiceSpy.getAllCanvasObjects.and.returnValue([]); + }); + + it('showAll', () => { + domManipulationService.showAll(); + + expect(elementRegistryServiceSpy.getAllCanvasObjects).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.getAllActivities).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.getAllGroups).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.getAllConnections).toHaveBeenCalled(); + }); + + it('showStep', () => { + domManipulationService.showStep(preBuildTestStory(2)[1]); + + expect(elementRegistryServiceSpy.getAllCanvasObjects).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.getAllActivities).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.getAllGroups).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.getAllConnections).toHaveBeenCalled(); + }); +}); diff --git a/src/app/domManipulation/service/dom-manipulation.service.ts b/src/app/domManipulation/service/dom-manipulation.service.ts new file mode 100644 index 00000000..d076f8c6 --- /dev/null +++ b/src/app/domManipulation/service/dom-manipulation.service.ts @@ -0,0 +1,166 @@ +import { Injectable } from '@angular/core'; +import { BusinessObject } from 'src/app/common/domain/businessObject'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { StoryStep } from 'src/app/storyCreator-service/domain/storyStep'; +import { + highlightColour, + highlightNumberBackgroudColour, + highlightNumberColour, + highlightStrokeWidth, + numberBackgroudColour, + numberColour, + strokeWidth, +} from '../domain/replayConstants'; + +@Injectable({ + providedIn: 'root', +}) +export class DomManipulationService { + constructor(private elementRegistryService: ElementRegistryService) {} + + public showAll(): void { + this.removeHighlights(); + this.elementRegistryService + .getAllCanvasObjects() + .slice() + .concat(this.elementRegistryService.getAllGroups().slice()) + .map((e) => e.businessObject) + .forEach((element) => { + const domObject = document.querySelector( + '[data-element-id=' + element.id + ']' + ); + // @ts-ignore + domObject.style.display = 'block'; + }); + } + + public showStep(replayStep: StoryStep, previousStep?: StoryStep): void { + this.removeHighlights(); + const notShown = this.getAllNotShown(replayStep.objects); + + notShown.forEach((element) => { + const domObject = document.querySelector( + '[data-element-id=' + element.id + ']' + ); + if (domObject) { + // @ts-ignore + domObject.style.display = 'none'; + } + }); + + this.hightlightStep( + previousStep + ? replayStep.objects.filter((o) => !previousStep.objects.includes(o)) + : replayStep.objects + ); + + replayStep.objects.forEach((element) => { + const domObject = document.querySelector( + '[data-element-id=' + element.id + ']' + ); + if (domObject) { + // @ts-ignore + domObject.style.display = 'block'; + } + }); + } + + /** + * untestable DOM-Manipulations + */ + public getNumberDomForActivity(activity: SVGPolylineElement): any { + const numberDOMS = + // @ts-ignore + activity.parentElement.getElementsByClassName('djs-labelNumber'); + return { + numberBackgroundDom: numberDOMS[0], + numberTextDom: numberDOMS[1], + }; + } + + private removeHighlights(): void { + const allActivities = this.elementRegistryService.getAllActivities(); + const allConnections = this.elementRegistryService.getAllConnections(); + + allActivities.forEach((activity) => { + const querySelector = document.querySelector( + '[data-element-id=' + activity.id + ']' + ); + if (querySelector) { + const activityDomObject = + querySelector.getElementsByTagName('polyline')[0]; + + activityDomObject.style.stroke = + activity.businessObject.pickedColor || 'black'; + activityDomObject.style.strokeWidth = strokeWidth; + + const { numberBackgroundDom, numberTextDom } = + this.getNumberDomForActivity(activityDomObject); + if (numberBackgroundDom && numberTextDom) { + numberBackgroundDom.style.fill = numberBackgroudColour; + numberTextDom.style.fill = numberColour; + } + } + }); + + allConnections.forEach((connection) => { + // @ts-ignore + const connectionDomObject = document + .querySelector('[data-element-id=' + connection.id + ']') + .getElementsByTagName('polyline')[0]; + + connectionDomObject.style.stroke = + connection.businessObject.pickedColor || 'black'; + connectionDomObject.style.strokeWidth = '1.5'; + }); + } + + private hightlightStep(stepObjects: BusinessObject[]): void { + stepObjects + .filter((e) => e.type === elementTypes.ACTIVITY) + .forEach((activity) => { + const querySelector = document.querySelector( + '[data-element-id=' + activity.id + ']' + ); + if (querySelector) { + const activityDomObject = + querySelector.getElementsByTagName('polyline')[0]; + + activityDomObject.style.stroke = highlightColour; + activityDomObject.style.strokeWidth = highlightStrokeWidth; + + const { numberBackgroundDom, numberTextDom } = + this.getNumberDomForActivity(activityDomObject); + if (numberTextDom && numberBackgroundDom) { + numberBackgroundDom.style.fill = highlightNumberBackgroudColour; + numberTextDom.style.fill = highlightNumberColour; + } + } + }); + } + + private getAllNotShown(shownElements: BusinessObject[]): BusinessObject[] { + const notShownElements: BusinessObject[] = []; + const allObjects = this.elementRegistryService + .getAllCanvasObjects() + .concat(this.elementRegistryService.getAllGroups()); + + allObjects.forEach((element) => { + if (!shownElements.includes(element.businessObject)) { + if (element.type.includes(elementTypes.CONNECTION)) { + // @ts-ignore + if (!element.source.type.includes(elementTypes.GROUP)) { + notShownElements.push(element.businessObject); + } else { + // @ts-ignore + shownElements.push(element.target); + } + } else { + notShownElements.push(element.businessObject); + } + } + }); + return notShownElements; + } +} diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html new file mode 100644 index 00000000..f69b9267 --- /dev/null +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -0,0 +1,107 @@ +
+ +
+ + +
+ + + +
+ +
+
+
+ Icon +
+ Actor +
+ WorkObject +
+
+ +
+ + {{ iconName }} +
+
+ +
+ + +
+
+
+ Actors +
+ + + {{ getNameFromType(actor) }} +
+ +
+
+
+ WorkObjects +
+ + + {{ getNameFromType(workobject) }} +
+ +
+
+
+in diff --git a/src/app/domain-configuration/component/domain-configuration.component.scss b/src/app/domain-configuration/component/domain-configuration.component.scss new file mode 100644 index 00000000..b393da8d --- /dev/null +++ b/src/app/domain-configuration/component/domain-configuration.component.scss @@ -0,0 +1,56 @@ +.header { + display: grid; + grid-template-columns: 90px auto 60px 55px auto 60px 60px; +} + +.domainConfiguration { + display: grid; + grid-template-columns: 50% 50%; + height: calc(100vh - 100px); + padding-left: 5px; + padding-bottom: 5px; + margin-bottom: 100px; +} + +.allIconsHeader { + display: grid; + grid-template-columns: 50% 1px 25% 1px auto; +} + +.listEntry { + position: relative; + display: grid; + grid-template-columns: 50% 1px 25% 1px auto; +} + +.allIcons { + overflow-y: auto; +} + +.selectedIcons { + display: grid; + grid-template-rows: 50% 1px auto; + overflow-y: auto; + overflow-x: hidden; + padding-left: 10px; +} + +.icon { + width: 36px; + height: 36px; +} + +#line { + padding: 2px; + position: relative; + right: 0; + left: 0; + width: 100%; + border-bottom: solid 2px #ccc; + margin-top: -5px; +} + +.divider { + border-left: solid 1px #ccc; + margin-right: 5px; +} diff --git a/src/app/domain-configuration/component/domain-configuration.component.spec.ts b/src/app/domain-configuration/component/domain-configuration.component.spec.ts new file mode 100644 index 00000000..b92f1a06 --- /dev/null +++ b/src/app/domain-configuration/component/domain-configuration.component.spec.ts @@ -0,0 +1,46 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DomainConfigurationComponent } from 'src/app/domain-configuration/component/domain-configuration.component'; +import { MockService } from 'ng-mocks'; +import { ModelerService } from '../../modeler/service/modeler.service'; +import { DomainConfigurationService } from '../service/domain-configuration.service'; +import { IconDictionaryService } from '../service/icon-dictionary.service'; +import { DomSanitizer } from '@angular/platform-browser'; + +describe('DomainConfigurationComponent', () => { + let component: DomainConfigurationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DomainConfigurationComponent], + providers: [ + { + provide: ModelerService, + useValue: MockService(ModelerService), + }, + { + provide: DomainConfigurationService, + useValue: MockService(DomainConfigurationService), + }, + { + provide: IconDictionaryService, + }, + { + provide: DomSanitizer, + useValue: MockService(DomSanitizer), + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DomainConfigurationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/domain-configuration/component/domain-configuration.component.ts b/src/app/domain-configuration/component/domain-configuration.component.ts new file mode 100644 index 00000000..bdc00f67 --- /dev/null +++ b/src/app/domain-configuration/component/domain-configuration.component.ts @@ -0,0 +1,288 @@ +import { + ChangeDetectorRef, + Component, + EventEmitter, + OnInit, + Output, +} from '@angular/core'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; +import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; +import { BehaviorSubject } from 'rxjs'; +import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; +import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { getNameFromType } from 'src/app/common/util/naming'; +import { sanitizeIconName } from 'src/app/common/util/sanitizer'; +import { ModelerService } from 'src/app/modeler/service/modeler.service'; + +@Component({ + selector: 'app-domain-configuration', + templateUrl: './domain-configuration.component.html', + styleUrls: ['./domain-configuration.component.scss'], +}) +export class DomainConfigurationComponent implements OnInit { + private domainConfigurationTypes: DomainConfiguration | undefined; + private readonly initialConfigurationNames: DomainConfiguration | undefined; + + private configurationHasChanged = false; + + selectedActors = new BehaviorSubject([]); + selectedWorkobjects = new BehaviorSubject([]); + name = new BehaviorSubject(''); + + allIcons: Dictionary; + allIconNames = new BehaviorSubject([]); + + @Output() domainConfigurationEvent = new EventEmitter(); + + constructor( + private modelerService: ModelerService, + private configurationService: DomainConfigurationService, + private iconDictionaryService: IconDictionaryService, + private domSanitizer: DomSanitizer, + private changeDetectorRef: ChangeDetectorRef + ) { + this.domainConfigurationTypes = + configurationService.getCurrentConfigurationNames(); + this.initialConfigurationNames = + configurationService.getCurrentConfigurationNames(); + + this.allIcons = this.iconDictionaryService.getFullDictionary(); + this.allIconNames.next(this.allIcons.keysArray()); + this.name.next(this.domainConfigurationTypes?.name || ''); + + // @ts-ignore + this.selectedWorkobjects.next(this.domainConfigurationTypes?.workObjects); + // @ts-ignore + this.selectedActors.next(this.domainConfigurationTypes?.actors); + } + + ngOnInit(): void {} + + checkForActor(iconName: string): boolean { + return ( + this.domainConfigurationTypes?.actors.filter((actor: string) => + actor.includes(iconName) + ).length > 0 + ); + } + + checkForWorkObject(iconName: string): boolean { + return ( + this.domainConfigurationTypes?.workObjects.filter((workObject: string) => + workObject.includes(iconName) + ).length > 0 + ); + } + + private redraw(): void { + this.changeDetectorRef.detectChanges(); + } + + // @ts-ignore + checkActor(event, actor: string): void { + if (event.target.checked) { + this.selectActor(actor); + this.deselectWorkobject(actor); + } else { + this.deselectActor(actor); + } + this.redraw(); + } + + // @ts-ignore + checkWorkobject(event, workobject: string): void { + if (event.target.checked) { + this.selectWorkObject(workobject); + this.deselectActor(workobject); + } else { + this.deselectWorkobject(workobject); + } + this.redraw(); + } + + changeName(name: string): void { + if (this.domainConfigurationTypes) { + this.domainConfigurationTypes.name = name; + } + } + + private updateActorSubject(): void { + // @ts-ignore + this.selectedActors.next(this.domainConfigurationTypes?.actors); + this.configurationHasChanged = true; + } + + private updateWorkObjectSubject(): void { + // @ts-ignore + this.selectedWorkobjects.next(this.domainConfigurationTypes?.workObjects); + this.configurationHasChanged = true; + } + + selectActor(actor: string): void { + // @ts-ignore + this.domainConfigurationTypes?.actors.push(elementTypes.ACTOR + actor); + this.updateActorSubject(); + } + + selectWorkObject(workObject: string): void { + // @ts-ignore + this.domainConfigurationTypes?.workObjects.push( + elementTypes.WORKOBJECT + workObject + ); + this.updateWorkObjectSubject(); + } + + deselectActor(actor: string): void { + if (this.domainConfigurationTypes) { + this.domainConfigurationTypes = { + name: this.domainConfigurationTypes.name, + actors: this.domainConfigurationTypes.actors.filter( + (a: string) => !a.includes(actor) + ), + workObjects: this.domainConfigurationTypes.workObjects, + }; + } + this.updateActorSubject(); + } + + deselectWorkobject(workobject: string): void { + if (this.domainConfigurationTypes) { + this.domainConfigurationTypes = { + name: this.domainConfigurationTypes.name, + actors: this.domainConfigurationTypes.actors, + workObjects: this.domainConfigurationTypes.workObjects.filter( + (w: string) => !w.includes(workobject) + ), + }; + } + this.updateWorkObjectSubject(); + } + + emitDomainConfiguration(): void { + this.domainConfigurationEvent.emit(this.domainConfigurationTypes); + } + + resetDomain(): void { + this.modelerService.restart( + this.configurationService.createDefaultConfig() + ); + } + + saveDomain(): void { + if (this.configurationHasChanged) { + this.modelerService.restart(this.createDomainConfiguration()); + this.emitDomainConfiguration(); + } + } + + private createDomainConfiguration(): DomainConfiguration { + const actors: { [key: string]: any } = {}; + const workObjects: { [key: string]: any } = {}; + + this.domainConfigurationTypes?.actors.forEach((type: string) => { + actors[type] = this.iconDictionaryService.getIconSource( + getNameFromType(type) + ); + }); + this.domainConfigurationTypes?.workObjects.forEach((type: string) => { + workObjects[type] = this.iconDictionaryService.getIconSource( + getNameFromType(type) + ); + }); + + return { + name: this.domainConfigurationTypes?.name || '', + actors, + workObjects, + }; + } + + exportDomain(): void { + this.saveDomain(); + this.configurationService.exportConfiguration(); + } + + cancel(): void { + this.domainConfigurationTypes = this.initialConfigurationNames; + this.resetToInitialConfiguration(); + } + + startIconUpload(): void { + // @ts-ignore + document.getElementById('importIcon').click(); + } + + startDomainImport(): void { + // @ts-ignore + document.getElementById('importDomain').click(); + } + + importDomain(): void { + // @ts-ignore + const domainInputFile = document.getElementById('importDomain').files[0]; + const reader = new FileReader(); + + reader.onloadend = (e) => { + // @ts-ignore + this.configurationService.importConfiguration(e.target.result); + }; + + reader.readAsDataURL(domainInputFile); + } + + importIcon(): void { + // @ts-ignore + const iconInputFile = document.getElementById('importIcon').files[0]; + const reader = new FileReader(); + const endIndex = iconInputFile.name.lastIndexOf('.'); + const iconName = sanitizeIconName( + iconInputFile.name.substring(0, endIndex) + ); + + reader.onloadend = (e) => { + this.iconDictionaryService.addIMGToIconDictionary( + // @ts-ignore + e.target.result, + iconName + '_custom' + ); + + this.allIcons = this.iconDictionaryService.getFullDictionary(); + this.allIconNames.next(this.allIcons.keysArray()); + }; + + reader.readAsDataURL(iconInputFile); + } + + getNameFromType(type: string): string { + return getNameFromType(type); + } + + getSrcForIcon(name: string): SafeUrl { + let iconName = ''; + if (name.includes(elementTypes.DOMAINSTORY)) { + iconName = getNameFromType(name); + } else { + iconName = name; + } + const rawSrc = this.iconDictionaryService.getIconSource(iconName); + + if (!rawSrc) { + return ''; + } + + if (rawSrc.startsWith('data')) { + return this.domSanitizer.bypassSecurityTrustUrl(rawSrc); + } else { + return this.domSanitizer.bypassSecurityTrustUrl( + 'data:image/svg+xml,' + rawSrc + ); + } + } + + private resetToInitialConfiguration(): void { + this.updateActorSubject(); + this.updateWorkObjectSubject(); + } +} diff --git a/app/domain-story-modeler/language/icon/all_Icons.js b/src/app/domain-configuration/domain/allIcons.ts similarity index 81% rename from app/domain-story-modeler/language/icon/all_Icons.js rename to src/app/domain-configuration/domain/allIcons.ts index dc9e06b8..3c49c93b 100644 --- a/app/domain-story-modeler/language/icon/all_Icons.js +++ b/src/app/domain-configuration/domain/allIcons.ts @@ -1,14 +1,14 @@ -import { Dict } from '../classes/collection'; +import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; -export const all_icons = { +export let appendedIcons = new Dictionary(); +export const allIcons = { Person: '', Group: - '', - Pet: - '', + '', + Pet: '', Conversation: - '', + '', World: '', Store: @@ -29,24 +29,18 @@ export const all_icons = { '', Courthouse: '', - Flag: - '', + Flag: '', Place: '', - Car: - '', - Bus: - '', + Car: '', + Bus: '', Train: '', Truck: '', - Taxi: - '', - Bike: - '', - Boat: - '', + Taxi: '', + Bike: '', + Boat: '', Motorcycle: '', Plane: @@ -71,14 +65,12 @@ export const all_icons = { '', Folder: '', - Call: - '', + Call: '', Email: '', Copyright: '', - DNS: - '', + DNS: '', Settings: '', Cellphone: @@ -91,12 +83,10 @@ export const all_icons = { '', Signal: '', - Key: - '', + Key: '', Pencil: '', - Sum: - '', + Sum: '', Headset: '', Keyboard: @@ -133,16 +123,13 @@ export const all_icons = { '', 'Picture-as-PDF': '', - Grid: - '', + Grid: '', Watch: '', - Euro: - '', + Euro: '', Dollar: '', - Info: - '', + Info: '', Alarm: '', Wrench: @@ -159,8 +146,7 @@ export const all_icons = { '', Hourglass: '', - Time: - '', + Time: '', Search: '', Shopping: @@ -182,19 +168,17 @@ export const all_icons = { 'How-To-Reg': '', 'View-List': - '' + '', }; -export function getAllStandardIconKeys() { - let allIcons = new Dict(); +export function getAllStandardIconKeys(): string[] { + const allIconsDict = new Dictionary(); - allIcons.addEach(all_icons); + allIconsDict.addEach(allIcons); - return allIcons.keysArray(); + return allIconsDict.keysArray(); } -export let appendedIcons = new Dict(); - -export function overrideAppendedIcons(newIcons) { +export function overrideAppendedIcons(newIcons: Dictionary): void { appendedIcons = newIcons; } diff --git a/src/app/domain-configuration/service/domain-configuration.service.spec.ts b/src/app/domain-configuration/service/domain-configuration.service.spec.ts new file mode 100644 index 00000000..f0dce0ac --- /dev/null +++ b/src/app/domain-configuration/service/domain-configuration.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; + +describe('DomainConfigurationService', () => { + let service: DomainConfigurationService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DomainConfigurationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/domain-configuration/service/domain-configuration.service.ts b/src/app/domain-configuration/service/domain-configuration.service.ts new file mode 100644 index 00000000..89fb9fb1 --- /dev/null +++ b/src/app/domain-configuration/service/domain-configuration.service.ts @@ -0,0 +1,242 @@ +import { Injectable } from '@angular/core'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { allIcons } from 'src/app/domain-configuration/domain/allIcons'; +import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; +import { Dictionary, Entry } from 'src/app/common/domain/dictionary/dictionary'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; + +@Injectable({ + providedIn: 'root', +}) +export class DomainConfigurationService { + constructor( + private iconDictionaryService: IconDictionaryService, + private elementRegistryService: ElementRegistryService + ) {} + + private domainName: string | undefined = ''; + + public getDomainName(): string { + return this.domainName ? this.domainName : ''; + } + + public setDomainName(domainName: string): void { + this.domainName = domainName; + } + + public importConfiguration(config: DomainConfiguration): void { + const reader = new FileReader(); + + reader.onloadend = (e) => { + if (e && e.target) { + const domainConfiguration = e.target.result?.toString(); + if (domainConfiguration) { + this.loadConfiguration(JSON.parse(domainConfiguration)); + if (!this.domainName && config.name.endsWith('.domain')) { + this.domainName = config.name.replace('.domain', ''); + } + } + } + }; + // @ts-ignore + reader.readAsText(config); + } + + public exportConfiguration(): void { + const domainConfiguration = this.getCurrentConfiguration(); + if (!domainConfiguration) { + return; + } + + const configJSONString = JSON.stringify(domainConfiguration); + const filename = this.getDomainName() || 'domain'; + const element = document.createElement('a'); + + element.setAttribute( + 'href', + 'data:text/plain;charset=utf-8,' + encodeURIComponent(configJSONString) + ); + element.setAttribute('download', filename + '.domain'); + element.style.display = 'none'; + document.body.appendChild(element); + + element.click(); + + document.body.removeChild(element); + } + + public loadConfiguration(customConfig: DomainConfiguration): void { + const actorDict = new Dictionary(); + const workObjectDict = new Dictionary(); + + const configurationName = customConfig.name; + actorDict.addEach(customConfig.actors); + workObjectDict.addEach(customConfig.workObjects); + + const actorKeys = actorDict.keysArray(); + const workObjectKeys = workObjectDict.keysArray(); + + this.iconDictionaryService + .getIconConfiguration() + .appendSRCFile(actorKeys, actorDict, workObjectKeys, workObjectDict); + + this.iconDictionaryService.registerDomainConfigurationIcons( + elementTypes.ACTOR, + actorKeys.map((a) => elementTypes.ACTOR + a) + ); + this.iconDictionaryService.registerDomainConfigurationIcons( + elementTypes.WORKOBJECT, + workObjectKeys.map((w) => elementTypes.WORKOBJECT + w) + ); + + this.setDomainName(configurationName); + } + + public getCurrentConfiguration(): DomainConfiguration | undefined { + const actors = this.iconDictionaryService.getActorsDictionary(); + const workObjects = this.iconDictionaryService.getWorkObjectsDictionary(); + + let domainConfiguration; + + if (actors.size() > 0 && workObjects.size() > 0) { + domainConfiguration = this.createConfigFromDictionaries( + actors, + [], + workObjects, + [], + this.getDomainName() + ); + } + return domainConfiguration; + } + + public getCurrentConfigurationNames(): DomainConfiguration { + return { + name: this.domainName || '', + actors: this.iconDictionaryService.getActorsDictionary().keysArray(), + workObjects: this.iconDictionaryService + .getWorkObjectsDictionary() + .keysArray(), + }; + } + + private createConfigFromDictionaries( + actorsDict: Dictionary, + actorOrder: string[] | undefined, + workObjectsDict: Dictionary, + workobjectOrder: string[] | undefined, + domainName?: string, + config?: DomainConfiguration + ): DomainConfiguration { + const actors = actorsDict.keysArray(); + const workObjects = workObjectsDict.keysArray(); + const actorsJSON: { [key: string]: any } = {}; + const workObjectJSON: { [key: string]: any } = {}; + + if (actorOrder) { + actorOrder.forEach((actor: string) => { + actorsJSON[actor.replace(elementTypes.ACTOR, '')] = + actorsDict.get(actor); + }); + } + if (workobjectOrder) { + workobjectOrder.forEach((workObject: string) => { + workObjectJSON[workObject.replace(elementTypes.WORKOBJECT, '')] = + workObjectsDict.get(workObject); + }); + } + + actors.forEach((actor) => { + if (!actorOrder || !actorOrder.includes(actor)) { + actorsJSON[actor.replace(elementTypes.ACTOR, '')] = + actorsDict.get(actor); + } + }); + + workObjects.forEach((workObject) => { + if (!workobjectOrder || !workobjectOrder.includes(workObject)) { + workObjectJSON[workObject.replace(elementTypes.WORKOBJECT, '')] = + workObjectsDict.get(workObject); + } + }); + + if (config) { + Object.keys(config.actors).forEach((actor: string) => { + actorsJSON[actor.replace(elementTypes.ACTOR, '')] = + actorsDict.get(actor); + }); + Object.keys(config.workObjects).forEach((workObject: string) => { + workObjectJSON[workObject.replace(elementTypes.ACTOR, '')] = + actorsDict.get(workObject); + }); + } + + return { + name: domainName ? domainName : this.domainName ? this.domainName : '', + actors: actorsJSON, + workObjects: workObjectJSON, + }; + } + + public createDefaultConfig(): DomainConfiguration { + const allCanvasObjects = this.elementRegistryService.getAllCanvasObjects(); + + const currentConfig = this.createConfigFromDictionaries( + this.iconDictionaryService.getActorsDictionary(), + [], + this.iconDictionaryService.getWorkObjectsDictionary(), + [], + '' + ); + const canvasObjectTypes: string[] = []; + const currentActors = new Dictionary(); + const currentWorkobjects = new Dictionary(); + const allActors = new Dictionary(); + const allWorkobjects = new Dictionary(); + const newActors: { [key: string]: any } = {}; + const newWorkobjects: { [key: string]: any } = {}; + + currentActors.addEach(currentConfig.actors); + currentWorkobjects.addEach(currentConfig.workObjects); + + currentActors.keysArray().forEach((name: string) => { + if (!(name in allIcons)) { + allActors.add(currentActors.get(name), name); + } + }); + + currentWorkobjects.keysArray().forEach((name) => { + if (!(name in allIcons)) { + allWorkobjects.add(currentWorkobjects.get(name), name); + } + }); + + allCanvasObjects.forEach((object) => { + const objectType = object.type + .replace(elementTypes.ACTOR, '') + .replace(elementTypes.WORKOBJECT, ''); + if (!canvasObjectTypes.includes(objectType)) { + canvasObjectTypes.push(objectType); + } + }); + + allActors.keysArray().forEach((key) => { + if (canvasObjectTypes.includes(key)) { + newActors[key] = allActors.get(key); + } + }); + + allWorkobjects.keysArray().forEach((key) => { + if (canvasObjectTypes.includes(key)) { + newWorkobjects[key] = allWorkobjects.get(key); + } + }); + + return { + name: '', + actors: newActors, + workObjects: newWorkobjects, + }; + } +} diff --git a/src/app/domain-configuration/service/icon-dictionary.service.spec.ts b/src/app/domain-configuration/service/icon-dictionary.service.spec.ts new file mode 100644 index 00000000..1afacb43 --- /dev/null +++ b/src/app/domain-configuration/service/icon-dictionary.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; + +describe('IconDictionaryService', () => { + let service: IconDictionaryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(IconDictionaryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/domain-configuration/service/icon-dictionary.service.ts b/src/app/domain-configuration/service/icon-dictionary.service.ts new file mode 100644 index 00000000..74f0343a --- /dev/null +++ b/src/app/domain-configuration/service/icon-dictionary.service.ts @@ -0,0 +1,267 @@ +import { Injectable } from '@angular/core'; +import { Dictionary, Entry } from 'src/app/common/domain/dictionary/dictionary'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { getNameFromType } from 'src/app/common/util/naming'; +import { + allIcons, + appendedIcons, +} from 'src/app/domain-configuration/domain/allIcons'; +import { + defaultConf, + IconConfiguration, +} from 'src/app/common/domain/iconConfiguration'; +import { Configuration } from 'src/app/common/domain/configuration'; +import { BusinessObject } from 'src/app/common/domain/businessObject'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; + +@Injectable({ + providedIn: 'root', +}) +export class IconDictionaryService { + private prefix = 'icon-domain-story-'; + + private actorIconDictionary = new Dictionary(); + private workObjectDictionary = new Dictionary(); + + private allIconDictionary = new Dictionary(); + private iconDictionary = new Dictionary(); + + private customConfiguration: DomainConfiguration | undefined; + + private readonly iconConfig: IconConfiguration; + + constructor() { + this.allIconDictionary.addEach(allIcons); + this.iconConfig = new IconConfiguration(this.allIconDictionary); + } + + public setCusomtConfiguration( + customConfiguration: DomainConfiguration + ): void { + this.customConfiguration = customConfiguration; + } + + public getIconConfig( + domainConfiguration?: DomainConfiguration + ): Configuration { + if (domainConfiguration) { + return this.iconConfig.createCustomConf(true, domainConfiguration); + } + if (this.customConfiguration) { + return this.iconConfig.createCustomConf( + false, + this.customConfiguration as DomainConfiguration + ); + } + return this.iconConfig.getDefaultConf(); + } + + public getIconConfiguration(): IconConfiguration { + return this.iconConfig; + } + + public allInTypeDictionary( + type: string, + elements: BusinessObject[] + ): boolean { + let collection: Dictionary; + if (type === elementTypes.ACTOR) { + collection = this.actorIconDictionary; + } else if (type === elementTypes.WORKOBJECT) { + collection = this.workObjectDictionary; + } + + let allIn = true; + // @ts-ignore + if (elements) { + elements.forEach((element) => { + if (!collection.has(element.type)) { + allIn = false; + } + }); + } else { + return false; + } + return allIn; + } + + public registerDomainConfigurationIcons( + dictionaryType: string, + iconTypes: string[] + ): void { + let collection: Dictionary; + if (dictionaryType === elementTypes.ACTOR) { + collection = this.actorIconDictionary; + } else if (dictionaryType === elementTypes.WORKOBJECT) { + collection = this.workObjectDictionary; + } + + const allTypes = new Dictionary(); + allTypes.addEach(allIcons); + allTypes.appendDict(appendedIcons); + + iconTypes.forEach((type) => { + if (!collection.has(type)) { + const name = getNameFromType(type); + const src = allTypes.get(name); + if (src) { + this.registerTypeIcon(dictionaryType, type, src); + this.registerIcon(type, this.prefix + name.toLowerCase()); + } + } + }); + } + + public registerElementIcons( + dictionaryType: string, + elements: BusinessObject[] + ): void { + this.registerDomainConfigurationIcons( + dictionaryType, + elements.map((element) => element.type) + ); + } + + public registerTypeIcon(type: string, name: string, src: string): void { + if (!name.includes(type)) { + name = type + name; + } + + let collection = new Dictionary(); + if (type === elementTypes.ACTOR) { + collection = this.actorIconDictionary; + } else if (type === elementTypes.WORKOBJECT) { + collection = this.workObjectDictionary; + } + collection.set(name, src); + } + + public getAppendedIconDictionary(): Dictionary { + const appendedDict = new Dictionary(); + appendedIcons.keysArray().forEach((key) => { + if (!this.allIconDictionary.has(key)) { + appendedDict.set(key, appendedIcons.get(key)); + } + }); + return appendedDict; + } + + public getFullDictionary(): Dictionary { + const fullDictionary = new Dictionary(); + fullDictionary.appendDict(this.allIconDictionary); + fullDictionary.appendDict(this.getAppendedIconDictionary()); + return fullDictionary; + } + + public isInTypeDictionary(type: string, name: string): boolean { + if (type === elementTypes.ACTOR) { + return this.actorIconDictionary.has(name); + } else if (type === elementTypes.WORKOBJECT) { + return this.workObjectDictionary.has(name); + } + return false; + } + + public initTypeDictionaries(actors: string[], workObjects: string[]): void { + if (!actors) { + actors = defaultConf.actors; + } + if (!workObjects) { + workObjects = defaultConf.workObjects; + } + + const allTypes = new Dictionary(); + allTypes.addEach(allIcons); + allTypes.appendDict(this.getAppendedIconDictionary()); + + for (const actor of actors) { + const key = elementTypes.ACTOR + actor; + this.actorIconDictionary.add(allTypes.get(actor), key); + } + + this.actorIconDictionary.keysArray().forEach((actor) => { + const name = getNameFromType(actor); + this.registerIcon(actor, 'icon-domain-story-' + name.toLowerCase()); + }); + + for (const workObject of workObjects) { + const key = elementTypes.WORKOBJECT + workObject; + this.workObjectDictionary.add(allTypes.get(workObject), key); + } + + this.workObjectDictionary.keysArray().forEach((workObject) => { + const name = getNameFromType(workObject); + this.registerIcon(workObject, 'icon-domain-story-' + name.toLowerCase()); + }); + } + + public getTypeDictionary(type: string): Dictionary { + if (type === elementTypes.ACTOR) { + return this.actorIconDictionary; + } else if (type === elementTypes.WORKOBJECT) { + return this.workObjectDictionary; + } + return new Dictionary(); + } + + public getTypeDictionaryKeys(type: string): string[] { + if (type === elementTypes.ACTOR) { + return this.actorIconDictionary.keysArray(); + } else if (type === elementTypes.WORKOBJECT) { + return this.workObjectDictionary.keysArray(); + } + + return []; + } + + public getTypeIconSRC(type: string, name: string): string | null { + if (type === elementTypes.ACTOR) { + if (!name.startsWith(elementTypes.ACTOR)) { + name = elementTypes.ACTOR + name; + } + return this.actorIconDictionary.get(name); + } else if (type === elementTypes.WORKOBJECT) { + if (!name.startsWith(elementTypes.WORKOBJECT)) { + name = elementTypes.WORKOBJECT + name; + } + return this.workObjectDictionary.get(name); + } + return null; + } + + public getIconSource(name: string): string | null { + if (this.allIconDictionary.has(name)) { + return this.allIconDictionary.get(name); + } else if (appendedIcons.has(name)) { + return appendedIcons.get(name); + } + return null; + } + + public getAllIconDictionary(): Dictionary { + return this.allIconDictionary; + } + + public getActorsDictionary(): Dictionary { + return this.actorIconDictionary; + } + + public getWorkObjectsDictionary(): Dictionary { + return this.workObjectDictionary; + } + + public addIMGToIconDictionary( + input: string | ArrayBuffer | null, + name: string + ): void { + appendedIcons.set(name, input); + } + + public registerIcon(name: string, src: string): void { + this.iconDictionary.set(name, src); + } + + public getIconForType(type: string): string | null { + return this.iconDictionary.get(type); + } +} diff --git a/src/app/elementRegistry-service/element-registry.service.spec.ts b/src/app/elementRegistry-service/element-registry.service.spec.ts new file mode 100644 index 00000000..86fd3562 --- /dev/null +++ b/src/app/elementRegistry-service/element-registry.service.spec.ts @@ -0,0 +1,130 @@ +import { TestBed } from '@angular/core/testing'; + +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { deepCopy } from '../common/util/deepCopy'; +import { + ActivityCanvasObject, + testActivityCanvasObject, +} from '../common/domain/activityCanvasObject'; +import { CanvasObject, testCanvasObject } from '../common/domain/canvasObject'; +import { + GroupCanvasObject, + testGroupCanvasObject, +} from '../common/domain/groupCanvasObject'; +import { elementTypes } from '../common/domain/elementTypes'; + +describe('ElementRegistryService', () => { + let service: ElementRegistryService; + let registry: any; + + let testActivity: ActivityCanvasObject; + let testActor: CanvasObject; + let testWorkobject: CanvasObject; + let testGroup: GroupCanvasObject; + let testConnection: ActivityCanvasObject; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ElementRegistryService); + + registry = { + _elements: [], + }; + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + beforeEach(() => { + testActor = deepCopy(testCanvasObject); + testActor.type = elementTypes.ACTOR; + testActor.businessObject.type = elementTypes.ACTOR; + + testActivity = deepCopy(testActivityCanvasObject); + testActivity.source = testActor; + + testWorkobject = deepCopy(testCanvasObject); + + testGroup = deepCopy(testGroupCanvasObject); + + testConnection = deepCopy(testActivityCanvasObject); + + testConnection.type = elementTypes.CONNECTION; + testConnection.businessObject.type = elementTypes.CONNECTION; + }); + + describe('createObjectListForDSTDownload', () => { + beforeEach(() => { + registry._elements = [testActivity, testActor, testWorkobject, testGroup]; + }); + + it('should return empty if registry not correctly initialized', () => { + service.init({ _elements: [] }); + const objectListForDSTDownload = service.createObjectListForDSTDownload(); + expect(objectListForDSTDownload).toEqual([]); + }); + + it('should return objectList', () => { + service.init(registry); + + const objectListForDSTDownload = service.createObjectListForDSTDownload(); + expect(objectListForDSTDownload).toContain(testActivity.businessObject); + expect(objectListForDSTDownload).toContain(testActor.businessObject); + expect(objectListForDSTDownload).toContain(testWorkobject.businessObject); + expect(objectListForDSTDownload).toContain(testGroup.businessObject); + + service.clear(); + }); + }); + + describe('getObjects', () => { + beforeEach(() => { + registry._elements = [ + testActivity, + testActor, + testWorkobject, + testGroup, + testConnection, + ]; + service.init(registry); + }); + + it('getAllActivites', () => { + const activities = service.getAllActivities(); + + expect(activities).toContain(testActivity); + }); + + it('getActivitiesFromActors', () => { + const activities = service.getActivitiesFromActors(); + + expect(activities).toContain(testActivity); + }); + + it('getAllCanvasObjects', () => { + const objects = service.getAllCanvasObjects(); + + expect(objects).toContain(testActivity); + expect(objects).toContain(testActor); + expect(objects).toContain(testWorkobject); + expect(objects).toContain(testConnection); + }); + + it('getAllConnections', () => { + const connections = service.getAllConnections(); + + expect(connections).toContain(testConnection); + }); + + it('getAllGroups', () => { + const groups = service.getAllGroups(); + + expect(groups).toContain(testGroup); + }); + + afterAll(() => { + service.clear(); + }); + }); +}); diff --git a/src/app/elementRegistry-service/element-registry.service.ts b/src/app/elementRegistry-service/element-registry.service.ts new file mode 100644 index 00000000..3bae556f --- /dev/null +++ b/src/app/elementRegistry-service/element-registry.service.ts @@ -0,0 +1,171 @@ +import { Injectable } from '@angular/core'; + +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { BusinessObject } from 'src/app/common/domain/businessObject'; +import { CanvasObject } from 'src/app/common/domain/canvasObject'; +import { GroupCanvasObject } from '../common/domain/groupCanvasObject'; +import { ActivityCanvasObject } from '../common/domain/activityCanvasObject'; + +@Injectable({ + providedIn: 'root', +}) +export class ElementRegistryService { + private registry: any; + private fullyInitialized = false; + + constructor() {} + + public init(registry: any): void { + this.registry = registry._elements; + } + + public clear(): void { + this.registry = null; + this.fullyInitialized = false; + } + + public createObjectListForDSTDownload(): BusinessObject[] { + if (this.registry[0]) { + const allObjectsFromCanvas = this.getAllCanvasObjects(); + const groups = this.getAllGroups(); + + const objectList: BusinessObject[] = []; + + this.fillListOfCanvasObjects(allObjectsFromCanvas, objectList, groups); + + return objectList; + } + return []; + } + + private fillListOfCanvasObjects( + allObjectsFromCanvas: CanvasObject[], + objectList: BusinessObject[], + groups: GroupCanvasObject[] + ): void { + allObjectsFromCanvas.forEach((canvasElement) => { + if (canvasElement.type === elementTypes.ACTIVITY) { + objectList.push(canvasElement.businessObject); + } + + // ensure that Activities are always after Actors, Workobjects and Groups in .dst files + else { + if (canvasElement.type === elementTypes.TEXTANNOTATION) { + canvasElement.businessObject.width = canvasElement.width; + canvasElement.businessObject.height = canvasElement.height; + } + objectList.unshift(canvasElement.businessObject); + } + }); + + groups.forEach((group) => { + objectList.push(group.businessObject); + }); + } + + public correctInitialize(): void { + if (!this.fullyInitialized) { + if (this.registry.__implicitroot) { + this.registry = this.registry.__implicitroot.element.children; + this.fullyInitialized = true; + } + } + } + + public getAllActivities(): ActivityCanvasObject[] { + const activities: ActivityCanvasObject[] = []; + + this.getAllCanvasObjects().forEach((element) => { + if (element.type.includes(elementTypes.ACTIVITY)) { + activities.push(element as ActivityCanvasObject); + } + }); + return activities; + } + + public getAllConnections(): ActivityCanvasObject[] { + const connections: ActivityCanvasObject[] = []; + this.getAllCanvasObjects().forEach((element) => { + const type = element.type; + if (type === elementTypes.CONNECTION) { + connections.push(element as ActivityCanvasObject); + } + }); + return connections; + } + + public getAllCanvasObjects(): CanvasObject[] { + const allObjects: CanvasObject[] = []; + const groupObjects: GroupCanvasObject[] = []; + + this.checkChildForGroup(groupObjects, allObjects); + + // for each memorized group, remove it from the group-array and check its children, wether they are groups or not + // if a child is a group, memorize it in the group-array + // else add the child to the return-array + let i = groupObjects.length - 1; + while (groupObjects.length >= 1) { + const currentGroup = groupObjects.pop(); + // @ts-ignore + currentGroup.children.forEach((child: CanvasObject) => { + const type = child.type; + if (type.includes(elementTypes.GROUP)) { + groupObjects.push(child as GroupCanvasObject); + } else { + allObjects.push(child); + } + }); + i = groupObjects.length - 1; + } + return allObjects; + } + + // returns all groups on the canvas and inside other groups + public getAllGroups(): GroupCanvasObject[] { + const groupObjects: GroupCanvasObject[] = []; + const allObjects: CanvasObject[] = []; + + this.checkChildForGroup(groupObjects, allObjects); + + for (const group of groupObjects) { + // @ts-ignore + group.children.forEach((child: CanvasObject) => { + if (child.type.includes(elementTypes.GROUP)) { + groupObjects.push(child as GroupCanvasObject); + } + }); + } + return groupObjects; + } + + private checkChildForGroup( + groupObjects: GroupCanvasObject[], + allObjects: CanvasObject[] + ): void { + // tslint:disable-next-line:prefer-for-of + for (let i = 0; i < this.registry.length; i++) { + const entry = this.registry[i]; + const type = entry.type; + if (type.includes(elementTypes.GROUP)) { + // if it is a group, memorize this for later + groupObjects.push(entry); + } else { + allObjects.push(entry); + } + } + } + + // get a list of activities, that originate from an actor-type + public getActivitiesFromActors(): ActivityCanvasObject[] { + const activitiesFromActors: ActivityCanvasObject[] = []; + const activities = this.getAllActivities(); + + activities.forEach((activity: ActivityCanvasObject) => { + // @ts-ignore + if (activity.source.type.includes(elementTypes.ACTOR)) { + activitiesFromActors.push(activity); + } + }); + return activitiesFromActors; + } +} diff --git a/src/app/export/component/export-dialog/export-dialog.component.html b/src/app/export/component/export-dialog/export-dialog.component.html new file mode 100644 index 00000000..fb647390 --- /dev/null +++ b/src/app/export/component/export-dialog/export-dialog.component.html @@ -0,0 +1,16 @@ +

{{ title }}

+ + + + + + + diff --git a/src/app/export/component/export-dialog/export-dialog.component.scss b/src/app/export/component/export-dialog/export-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/export/component/export-dialog/export-dialog.component.spec.ts b/src/app/export/component/export-dialog/export-dialog.component.spec.ts new file mode 100644 index 00000000..0642c7d7 --- /dev/null +++ b/src/app/export/component/export-dialog/export-dialog.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExportDialogComponent } from 'src/app/export/component/export-dialog/export-dialog.component'; + +xdescribe('ExportDialogComponent', () => { + let component: ExportDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ExportDialogComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ExportDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/export/component/export-dialog/export-dialog.component.ts b/src/app/export/component/export-dialog/export-dialog.component.ts new file mode 100644 index 00000000..0328076a --- /dev/null +++ b/src/app/export/component/export-dialog/export-dialog.component.ts @@ -0,0 +1,35 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ExportDialogData } from 'src/app/export/component/export-dialog/exportDialogData'; + +@Component({ + selector: 'app-export-dialog', + templateUrl: './export-dialog.component.html', + styleUrls: ['./export-dialog.component.scss'], +}) +export class ExportDialogComponent implements OnInit { + title: string; + options: { + text: string; + fn: any; + }[]; + + constructor( + private dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) data: ExportDialogData + ) { + this.title = data.title; + this.options = data.options; + } + + ngOnInit(): void {} + + doOption(i: number): void { + this.options[i].fn(); + this.close(); + } + + close(): void { + this.dialogRef.close(); + } +} diff --git a/src/app/export/component/export-dialog/exportDialogData.ts b/src/app/export/component/export-dialog/exportDialogData.ts new file mode 100644 index 00000000..9b22eefe --- /dev/null +++ b/src/app/export/component/export-dialog/exportDialogData.ts @@ -0,0 +1,19 @@ +export class ExportDialogData { + public title: string; + public options: ExportOption[]; + + constructor(title: string, options: ExportOption[]) { + this.title = title; + this.options = options; + } +} + +export class ExportOption { + public text: string; + public fn: any; + + constructor(text: string, fn: any) { + this.text = text; + this.fn = fn; + } +} diff --git a/src/app/export/domain/box.ts b/src/app/export/domain/box.ts new file mode 100644 index 00000000..16861982 --- /dev/null +++ b/src/app/export/domain/box.ts @@ -0,0 +1,6 @@ +export interface Box { + xLeft: number; + xRight: number; + yUp: number; + yDown: number; +} diff --git a/src/app/export/domain/browserSpecs.ts b/src/app/export/domain/browserSpecs.ts new file mode 100644 index 00000000..0eb0bed5 --- /dev/null +++ b/src/app/export/domain/browserSpecs.ts @@ -0,0 +1,4 @@ +export interface BrowserSpecs { + name: string; + version: string; +} diff --git a/src/app/export/domain/configAndDst.ts b/src/app/export/domain/configAndDst.ts new file mode 100644 index 00000000..5c569caa --- /dev/null +++ b/src/app/export/domain/configAndDst.ts @@ -0,0 +1,43 @@ +export class ConfigAndDST { + public domain = ''; + public dst = ''; + + public constructor(domain: string, dst: string) { + this.domain = domain; + this.dst = dst; + } +} + +export const testConfigAndDst: ConfigAndDST = { + domain: + '{"name":"",' + + '"actors":{"Person":"' + + '' + + '",' + + '"Group":"' + + '' + + '",' + + '"System":"' + + '"},' + + '"workObjects":{"Document":"' + + '",' + + '"Folder":"' + + '' + + '",' + + '"Call":"' + + '",' + + '"Email":"' + + '",' + + '"Conversation":"' + + '",' + + '"Info":"' + + '' + + '"}}', + dst: + '[' + + '{"type":"domainStory:workObjectDocument","name":"","id":"shape_3792","$type":"Element","di":{},"$descriptor":{},"pickedColor":"black","x":302,"y":102},' + + '{"type":"domainStory:actorPerson","name":"","id":"shape_4666","$type":"Element","di":{},"$descriptor":{},"pickedColor":"black","x":103,"y":93},' + + '{"type":"domainStory:activity","name":"","id":"connection_4884","$type":"Element","di":{},"$descriptor":{},"pickedColor":"black","number":1,' + + '"waypoints":[{"original":{"x":141,"y":131},"x":186,"y":133},{"original":{"x":340,"y":140},"x":302,"y":138}],' + + '"source":"shape_4666","target":"shape_3792"}]', +}; diff --git a/src/app/export/exportUtil.js b/src/app/export/exportUtil.js new file mode 100644 index 00000000..9f05bdc7 --- /dev/null +++ b/src/app/export/exportUtil.js @@ -0,0 +1,104 @@ +let extraHeight = 0; +const titleHeight = 30, + descriptionHeight = 15; +const xOffset = "8"; +const NS = "http://www.w3.org/2000/svg"; + +// Has to be js File so we can access te correct non-standard HTML-Properties + +export function createTitleAndDescriptionSVGElement( + title, + description, + xLeft, + yUp, + width +) { + title = title.replace("<", "").replace(">", ""); + + let titleElement = createTitle(title, width); + let descriptionElement = createDescription(description, width); + + // to display the title and description in the SVG-file, we need to add a container for our text-elements + let insertText = + '' + + titleElement + + descriptionElement + + ""; + return { insertText, extraHeight }; +} + +function createTitle(text, width) { + let tempCanvas = document.createElement("canvas"); + let ctx = tempCanvas.getContext("2d"); + ctx.font = "30px Arial"; + + return createTextSpans(text, width, ctx, 10, titleHeight, 30); +} + +function createDescription(text, width) { + let description = ""; + let descriptionParts = text.split("
"); + + let tempCanvas = document.createElement("canvas"); + let ctx = tempCanvas.getContext("2d"); + ctx.font = "12px Arial"; + + for (let i = 0; i < descriptionParts.length; i++) { + description += createTextSpans( + descriptionParts[i], + width, + ctx, + 0, + descriptionHeight, + 12 + ); + } + return description; +} + +function createTextSpans(text, width, ctx, yOffset, heightOffset, fontSize) { + let textSpans = ""; + let words = text.split(" "); + + let textTag = + ''; + + let textSpan = document.createElementNS(NS, "tspan"); + let textNode = document.createTextNode(words[0]); + + textSpan.setAttribute("x", xOffset); + textSpan.setAttribute("y", yOffset + extraHeight); + textSpan.setAttribute("font-size", fontSize); + textSpan.appendChild(textNode); + + for (let j = 1; j < words.length; j++) { + if (textSpan.firstChild && textSpan.firstChild.data) { + let len = textSpan.firstChild.data.length; + textNode.data += " " + words[j]; + + if (ctx.measureText(textNode.data).width > width - 16) { + extraHeight += heightOffset; + textSpan.firstChild.data = textSpan.firstChild.data.slice(0, len); // remove overflow word + + textSpans += textTag + textSpan.outerHTML + ""; // append line + + // create new textspan for line break + textSpan = document.createElementNS(NS, "tspan"); + textNode = document.createTextNode(words[j]); + textSpan.setAttribute("x", xOffset); + textSpan.setAttribute("y", yOffset + extraHeight); + textSpan.appendChild(textNode); + } + } + } + extraHeight += heightOffset; + + textSpans += textTag + textSpan.outerHTML + ""; + return textSpans; +} diff --git a/src/app/export/service/export.service.spec.ts b/src/app/export/service/export.service.spec.ts new file mode 100644 index 00000000..334be59a --- /dev/null +++ b/src/app/export/service/export.service.spec.ts @@ -0,0 +1,45 @@ +import { TestBed } from '@angular/core/testing'; + +import { ExportService } from 'src/app/export/service/export.service'; +import { HtmlPresentationService } from './html-presentation.service'; +import { MockService } from 'ng-mocks'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { PngService } from './png.service'; +import { SvgService } from './svg.service'; +import { RendererService } from '../../renderer-service/renderer.service'; + +describe('ExportService', () => { + let service: ExportService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { + provide: HtmlPresentationService, + useValue: MockService(HtmlPresentationService), + }, + { + provide: DomainConfigurationService, + useValue: MockService(DomainConfigurationService), + }, + { + provide: PngService, + useValue: MockService(PngService), + }, + { + provide: SvgService, + useValue: MockService(SvgService), + }, + { + provide: RendererService, + useValue: MockService(RendererService), + }, + ], + }); + service = TestBed.inject(ExportService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/export/service/export.service.ts b/src/app/export/service/export.service.ts new file mode 100644 index 00000000..f1927f40 --- /dev/null +++ b/src/app/export/service/export.service.ts @@ -0,0 +1,209 @@ +import { Injectable, OnDestroy } from '@angular/core'; +import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; +import { sanitizeForDesktop } from 'src/app/common/util/sanitizer'; +import { TitleService } from 'src/app/titleAndDescription/service/title.service'; +import { ConfigAndDST } from 'src/app/export/domain/configAndDst'; +import { DirtyFlagService } from 'src/app/dirtyFlag-service/dirty-flag.service'; +import { PngService } from 'src/app/export/service/png.service'; +import { SvgService } from 'src/app/export/service/svg.service'; +import { Subscription } from 'rxjs'; +import { RendererService } from '../../renderer-service/renderer.service'; +import { HtmlPresentationService } from './html-presentation.service'; + +@Injectable({ + providedIn: 'root', +}) +export class ExportService implements OnDestroy { + titleSubscription: Subscription; + descriptionSubscription: Subscription; + + public title = ''; + public description = ''; + + constructor( + private configurationService: DomainConfigurationService, + private titleService: TitleService, + private dirtyFlagService: DirtyFlagService, + private pngService: PngService, + private svgService: SvgService, + private htmlPresentationService: HtmlPresentationService, + private rendererService: RendererService + ) { + this.titleSubscription = this.titleService + .getTitleObservable() + .subscribe((title: string) => { + this.title = title; + }); + this.descriptionSubscription = this.titleService + .getDescriptionObservable() + .subscribe((description: string) => { + this.description = description; + }); + } + + ngOnDestroy(): void { + this.titleSubscription.unsubscribe(); + this.descriptionSubscription.unsubscribe(); + } + + public downloadHTMLPresentation(): void { + const filename = sanitizeForDesktop( + this.title + '_' + new Date().toString().slice(0, 10) + ); + this.htmlPresentationService.downloadHTMLPresentation(filename).then(); + } + + public downloadDST(): void { + const dst = JSON.stringify(this.rendererService.getStory()); + const configAndDST = this.createConfigAndDST(dst); + const json = JSON.stringify(configAndDST); + const element = document.createElement('a'); + + const filename = sanitizeForDesktop( + this.title + '_' + new Date().toString().slice(0, 10) + ); + element.setAttribute( + 'href', + 'data:text/plain;charset=utf-8,' + encodeURIComponent(json) + ); + element.setAttribute('download', filename + '.dst'); + + element.style.display = 'none'; + document.body.appendChild(element); + + element.click(); + + this.dirtyFlagService.makeClean(); + + document.body.removeChild(element); + } + + public downloadSVG(): void { + const objects = this.rendererService.getStory(); + const dst = this.createConfigAndDST(JSON.stringify(objects)); + + const svgData = this.svgService.createSVGData( + this.title, + this.description, + dst + ); + + const element = document.createElement('a'); + element.setAttribute( + 'href', + 'data:application/bpmn20-xml;charset=UTF-8,' + svgData + ); + element.setAttribute( + 'download', + sanitizeForDesktop(this.title) + '.dst.svg' + ); + + element.style.display = 'none'; + document.body.appendChild(element); + + element.click(); + + document.body.removeChild(element); + } + + public isDomainStoryExportable(): boolean { + return this.rendererService.getStory().length >= 1; + } + + public downloadPNG(): void { + const canvas = document.getElementById('canvas'); + if (canvas) { + const container = canvas.getElementsByClassName('djs-container'); + const svgElements = container[0].getElementsByTagName('svg'); + const outerSVGElement = svgElements[0]; + const viewport = outerSVGElement.getElementsByClassName('viewport')[0]; + const layerBase = viewport.getElementsByClassName('layer-base')[0]; + + const image = document.createElement('img'); + + let onLoadTriggered = false; + + // removes unwanted black dots in image + let svg = this.pngService.extractSVG(viewport, outerSVGElement); + + svg = this.pngService.prepareSVG( + svg, + layerBase, + this.description, + this.title + ); + + image.onload = () => { + onLoadTriggered = true; + const tempCanvas = document.createElement('canvas'); + + // add a 10px buffer to the right and lower boundary + tempCanvas.width = this.pngService.getWidth() + 10; + tempCanvas.height = this.pngService.getHeight() + 10; + + const ctx = tempCanvas.getContext('2d'); + if (ctx) { + // fill with white background + ctx.rect(0, 0, tempCanvas.width, tempCanvas.height); + ctx.fillStyle = 'white'; + ctx.fill(); + + ctx.drawImage(image, 0, 0); + } + + this.startPNGDownload(tempCanvas, image); + }; + image.onchange = image.onload; + + image.width = this.pngService.getWidth(); + image.height = this.pngService.getHeight(); + + image.src = 'data:image/svg+xml,' + svg; + + if (image.complete && !onLoadTriggered) { + onLoadTriggered = true; + const tempCanvas = document.createElement('canvas'); + + // add a 10px buffer to the right and lower boundary + tempCanvas.width = this.pngService.getWidth() + 10; + tempCanvas.height = this.pngService.getHeight() + 10; + + const ctx = tempCanvas.getContext('2d'); + if (ctx) { + ctx.drawImage(image, 0, 0); + } + + this.startPNGDownload(tempCanvas, image); + } + } + } + + private startPNGDownload( + tempCanvas: HTMLCanvasElement, + image: HTMLImageElement + ): void { + const png64 = tempCanvas.toDataURL('image/png'); + const ele = document.createElement('a'); + ele.setAttribute( + 'download', + sanitizeForDesktop(this.title) + + '_' + + new Date().toISOString().slice(0, 10) + + '.png' + ); + ele.setAttribute('href', png64); + document.body.appendChild(ele); + ele.click(); + document.body.removeChild(ele); + + // image source has to be removed to circumvent browser caching + image.src = ''; + } + + public createConfigAndDST(DomainStory: string): ConfigAndDST { + return new ConfigAndDST( + JSON.stringify(this.configurationService.getCurrentConfiguration()), + DomainStory + ); + } +} diff --git a/src/app/export/service/html-presentation.service.spec.ts b/src/app/export/service/html-presentation.service.spec.ts new file mode 100644 index 00000000..7d6437bc --- /dev/null +++ b/src/app/export/service/html-presentation.service.spec.ts @@ -0,0 +1,45 @@ +import { TestBed } from '@angular/core/testing'; + +import { HtmlPresentationService } from './html-presentation.service'; +import { MockService } from 'ng-mocks'; +import { DomManipulationService } from '../../domManipulation/service/dom-manipulation.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { ReplayStateService } from '../../replay-service/replay-state.service'; +import { DialogService } from '../../dialog/service/dialog.service'; +import { StoryCreatorService } from '../../storyCreator-service/story-creator.service'; + +describe('HtmlPresentationService', () => { + let service: HtmlPresentationService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { + provide: DomManipulationService, + useValue: MockService(DomManipulationService), + }, + { + provide: ElementRegistryService, + useValue: MockService(ElementRegistryService), + }, + { + provide: ReplayStateService, + useValue: MockService(ReplayStateService), + }, + { + provide: DialogService, + useValue: MockService(DialogService), + }, + { + provide: StoryCreatorService, + useValue: MockService(StoryCreatorService), + }, + ], + }); + service = TestBed.inject(HtmlPresentationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/export/service/html-presentation.service.ts b/src/app/export/service/html-presentation.service.ts new file mode 100644 index 00000000..17b53537 --- /dev/null +++ b/src/app/export/service/html-presentation.service.ts @@ -0,0 +1,193 @@ +import { Injectable } from '@angular/core'; +import { sanitizeForDesktop } from '../../common/util/sanitizer'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { DialogService } from '../../dialog/service/dialog.service'; +import { StoryCreatorService } from '../../storyCreator-service/story-creator.service'; +// @ts-ignore +import doT from 'dot'; +import { ReplayService } from '../../replay-service/replay.service'; + +@Injectable({ + providedIn: 'root', +}) +/** + * Initial idea and PR from https://github.com/indika-dev + */ +export class HtmlPresentationService { + constructor( + private elementRegistryService: ElementRegistryService, + private dialogService: DialogService, + private storyCreatorService: StoryCreatorService, + private replayService: ReplayService + ) {} + + private multiplexSecret: any; + private multiplexId: any; + + private canvas: any; + private selection: any; + private modeler: any; + + private initialized = false; + + private static viewBoxCoordinates(svg: any): any { + const ViewBoxCoordinate = + /width="([^"]+)"\s+height="([^"]+)"\s+viewBox="([^"]+)"/; + const match = svg.match(ViewBoxCoordinate); + return match[3]; + } + + /* + --------------------------- + SVG handling starts here + ---------------------------- + */ + + // tslint:disable-next-line:align + private static createSVGData(svg: any): string { + let data = JSON.parse(JSON.stringify(svg)); + + // to ensure that the title and description are inside the SVG container and do not overlapp with any elements, + // we change the confines of the SVG viewbox + let viewBoxIndex = data.indexOf('width="'); + + const viewBox = HtmlPresentationService.viewBoxCoordinates(data); + + let xLeft: number; + let width: number; + let yUp: number; + let height: number; + let bounds: string; + const splitViewBox = viewBox.split(/\s/); + + xLeft = +splitViewBox[0]; + yUp = +splitViewBox[1]; + width = +splitViewBox[2]; + height = +splitViewBox[3]; + + if (width < 300) { + width += 300; + } + + bounds = + 'width="100%"' + + ' height="auto" ' + + ' preserveAspectRatio="xMidYMid meet"' + + ' viewBox="' + + xLeft + + ' ' + + yUp + + ' ' + + (xLeft + width) + + ' ' + + (yUp + height); + + const dataStart = data.substring(0, viewBoxIndex); + viewBoxIndex = data.indexOf('" version'); + const dataEnd = data.substring(viewBoxIndex); + dataEnd.substring(viewBoxIndex); + + data = dataStart + bounds + dataEnd; + + return encodeURIComponent(data); + } + + public initialize(canvas: any, selection: any, modeler: any): void { + this.canvas = canvas; + this.selection = selection; + this.modeler = modeler; + this.initialized = true; + } + + public async downloadHTMLPresentation(filename: string): Promise { + const svgData = []; + // export all sentences of domain story + this.replayService.startReplay(); + try { + const result = await this.modeler.saveSVG({}); + this.fixSvgDefinitions(result, this.replayService.getCurrentStepNumber()); + svgData.push({ + content: HtmlPresentationService.createSVGData(result.svg), + transition: 'slide', + }); + } catch (err) { + alert('There was an error exporting the SVG.\n' + err); + } + while ( + this.replayService.getCurrentStepNumber() < + this.replayService.getMaxStepNumber() + ) { + this.replayService.nextStep(); + try { + const result = await this.modeler.saveSVG({}); + this.fixSvgDefinitions( + result, + this.replayService.getCurrentStepNumber() + ); + svgData.push({ + content: HtmlPresentationService.createSVGData(result.svg), + transition: 'slide', + }); + } catch (err) { + alert('There was an error exporting the SVG.\n' + err); + } + } + this.replayService.stopReplay(); + + // create download for presentation + const revealjsTemplate = document.getElementById('revealjs-template'); + // @ts-ignore + const dots = doT.template(revealjsTemplate.innerHTML); + const revealjsData = { + script: 'script', + // @ts-ignore + title: document.getElementById('title').innerHTML, + // @ts-ignore + description: document.getElementById('descriptionText').innerHTML, + sentences: svgData, + multiplexSecret: this.multiplexSecret, + multiplexId: this.multiplexId, + }; + const element = document.createElement('a'); + element.setAttribute( + 'href', + 'data:text/html;charset=UTF-8,' + dots(revealjsData) + ); + element.setAttribute('download', sanitizeForDesktop(filename) + '.html'); + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + } + + private fixSvgDefinitions( + result: { svg: string }, + sectionIndex: number + ): void { + const defs = result.svg.substring( + result.svg.indexOf(''), + result.svg.indexOf('') + 7 + ); + const split = defs.split(' { + const idToReplace = id.substring(4, id.length - 1); + const newId = + idToReplace.slice(0, id.length - 5) + + 'customId' + + sectionIndex + + idToReplace.slice(idToReplace.length - 2); + // @ts-ignore + result.svg = result.svg.replaceAll(idToReplace, newId); + }); + newDefs += ' { + let service: PngService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PngService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/export/service/png.service.ts b/src/app/export/service/png.service.ts new file mode 100644 index 00000000..af136266 --- /dev/null +++ b/src/app/export/service/png.service.ts @@ -0,0 +1,282 @@ +import { Injectable } from '@angular/core'; +import { createTitleAndDescriptionSVGElement } from 'src/app/export/exportUtil'; +import { BrowserSpecs } from 'src/app/export/domain/browserSpecs'; +import { Box } from 'src/app/export/domain/box'; + +@Injectable({ + providedIn: 'root', +}) +// tslint:disable:radix +export class PngService { + private width: number; + private height: number; + + constructor() { + this.width = 0; + this.height = 0; + } + + private browserSpecs(): BrowserSpecs { + const ua = navigator.userAgent; + let tem; + let M = + ua.match( + /(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i + ) || []; + if (/trident/i.test(M[1])) { + tem = /\brv[ :]+(\d+)/g.exec(ua) || []; + return { name: 'IE', version: tem[1] || '' }; + } + if (M[1] === 'Chrome') { + tem = ua.match(/\b(OPR|Edge)\/(\d+)/); + if (tem != null) { + return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] }; + } + } + M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; + // tslint:disable-next-line:no-conditional-assignment + if ((tem = ua.match(/version\/(\d+)/i)) != null) { + M.splice(1, 1, tem[1]); + } + return { name: M[0], version: M[1] }; + } + + public URIHashtagFix(svg: string): string { + let fix = false; + + const browser = this.browserSpecs(); + + const name = browser.name; + const version = parseInt(browser.version); + + // only implemented in chrome and firefox at the moment + if (name.includes('Chrome')) { + if (version >= 72) { + fix = true; + + // https://www.chromestatus.com/features/5656049583390720 + } + } else if (name.includes('Firefox')) { + fix = true; + + // versionNumber of implementation unknown + } + if (fix) { + while (svg.includes('#')) { + svg = svg.replace('#', '%23'); + } + } + return svg; + } + + public findMostOuterElements(svg: HTMLElement): Box { + let xLeft = 0; + let xRight = 0; + let yUp = 0; + let yDown = 0; + + const elements = svg.getElementsByClassName('djs-group'); + + // tslint:disable-next-line:prefer-for-of + for (let i = 0; i < elements.length; i++) { + const element = elements[i]; + const sub = element.children; + + let elXLeft; + let elXRight; + let elYUp; + let elYDown; + + const transform = sub[0].getAttribute('transform'); + if (transform) { + let nums; + + if (transform.includes('matrix')) { + transform.replace('matrix(', ''); + transform.replace(')', ''); + nums = transform.split(' '); + elXLeft = parseInt(nums[4]); + elYUp = parseInt(nums[5]); + } else { + transform.replace('translate(', ''); + transform.replace(')', ''); + nums = transform.split(' '); + elXLeft = parseInt(nums[0]); + elYUp = parseInt(nums[1]); + } + + const rects = sub[0].getElementsByTagName('rect'); + const outerRect = rects[rects.length - 1]; + + const width = outerRect.getAttribute('width'); + + elXRight = elXLeft + parseInt(width != null ? width : '0'); + elYDown = elYUp + sub[0].getBoundingClientRect().height; + } else { + const rects = element.getElementsByTagName('rect'); + const outerRect = rects[rects.length - 1]; + + const x = outerRect.getAttribute('x'); + const y = outerRect.getAttribute('y'); + + elXLeft = parseInt(x != null ? x : '0'); + elYUp = parseInt(y != null ? y : '0'); + + const width = outerRect.getAttribute('width'); + const height = outerRect.getAttribute('height'); + + elXRight = elXLeft + parseInt(width != null ? width : '0'); + elYDown = elYUp + parseInt(height != null ? height : '0') + 20; // Add 20 px as Padding for text at the bottom + } + if (elXLeft < xLeft) { + xLeft = elXLeft; + } + if (elXRight > xRight) { + xRight = elXRight; + } + if (elYUp < yUp) { + yUp = elYUp; + } + if (elYDown > yDown) { + yDown = elYDown; + } + } + + yUp -= 75; // we need to adjust yUp to have space for the title and description + + return { + xLeft, + xRight, + yUp, + yDown, + }; + } + + public prepareSVG( + svg: string, + layerBase: any, + description: string, + title: string + ): string { + const box = this.findMostOuterElements(layerBase); + let viewBoxIndex = svg.indexOf('width="'); + + this.calculateWidthAndHeight(box); + + const { insertText, extraHeight } = createTitleAndDescriptionSVGElement( + title, + description, + box.xLeft, + box.yUp + 20, + this.width + ); + this.height += extraHeight; + + const bounds = + 'width="' + + this.width + + '" height="' + + this.height + + '" viewBox=" ' + + box.xLeft + + ' ' + + (box.yUp - extraHeight) + + ' ' + + this.width + + ' ' + + this.height + + '" '; + + const dataStart = svg.substring(0, viewBoxIndex); + viewBoxIndex = svg.indexOf('style="'); + const dataEnd = svg.substring(viewBoxIndex); + dataEnd.substring(viewBoxIndex); + + svg = dataStart + bounds + dataEnd; + + const insertIndex = svg.indexOf('') + 20; + + svg = [svg.slice(0, insertIndex), insertText, svg.slice(insertIndex)].join( + '' + ); + svg = this.URIHashtagFix(svg); + + return svg; + } + + private calculateWidthAndHeight(box: Box): [number, number] { + if (box.xLeft < 0) { + if (box.xRight < 0) { + this.width = Math.abs(box.xLeft - box.xRight); + } else { + this.width = Math.abs(box.xLeft) + box.xRight; + } + } else { + this.width = box.xRight - box.xLeft; + } + + if (box.yUp < 0) { + if (box.yDown < 0) { + this.height = Math.abs(box.yUp - box.yDown); + } else { + this.height = Math.abs(box.yUp) + box.yDown; + } + } else { + this.height = box.yDown - box.yUp; + } + + // if the domain-Story is smaller than 300px in width or height, increase its dimensions + if (this.height < 300) { + this.height += 300; + box.yUp -= 150; + box.yDown += 150; + } + if (this.width < 300) { + this.width += 300; + box.xLeft -= 150; + box.xRight += 150; + } + return [this.height, this.width]; + } + + public extractSVG(viewport: any, outerSVGElement: any): string { + const layerResizers = viewport.getElementsByClassName('layer-resizers'); + const layerOverlays = viewport.getElementsByClassName('layer-overlays'); + const transform = viewport.getAttribute('transform'); + const translate = viewport.getAttribute('translate'); + + if (layerResizers[0]) { + layerResizers[0].parentNode.removeChild(layerResizers[0]); + } + if (layerOverlays[0]) { + layerOverlays[0].parentNode.removeChild(layerOverlays[0]); + } + + // remove canvas scrolling and scaling before serializeToString of SVG + if (transform) { + viewport.removeAttribute('transform'); + } + if (translate) { + viewport.removeAttribute('translate'); + } + + const svg = new XMLSerializer().serializeToString(outerSVGElement); + + // re-add canvas scrolling and scaling + if (transform) { + viewport.setAttribute('transform', transform); + } + if (translate) { + viewport.setAttribute('translate', translate); + } + return svg; + } + + public getWidth(): number { + return this.width; + } + + public getHeight(): number { + return this.height; + } +} diff --git a/src/app/export/service/svg.service.spec.ts b/src/app/export/service/svg.service.spec.ts new file mode 100644 index 00000000..fec65764 --- /dev/null +++ b/src/app/export/service/svg.service.spec.ts @@ -0,0 +1,25 @@ +import { TestBed } from '@angular/core/testing'; + +import { SvgService } from 'src/app/export/service/svg.service'; +import { ModelerService } from '../../modeler/service/modeler.service'; +import { MockService } from 'ng-mocks'; + +describe('SvgService', () => { + let service: SvgService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { + provide: ModelerService, + useValue: MockService(ModelerService), + }, + ], + }); + service = TestBed.inject(SvgService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/export/service/svg.service.ts b/src/app/export/service/svg.service.ts new file mode 100644 index 00000000..7f1fe6a8 --- /dev/null +++ b/src/app/export/service/svg.service.ts @@ -0,0 +1,114 @@ +import { Injectable } from '@angular/core'; +import { ConfigAndDST } from 'src/app/export/domain/configAndDst'; +import { createTitleAndDescriptionSVGElement } from 'src/app/export/exportUtil'; +import { ModelerService } from '../../modeler/service/modeler.service'; + +@Injectable({ + providedIn: 'root', +}) +export class SvgService { + private cacheData = ''; + + constructor(private modelerService: ModelerService) {} + + public createSVGData( + title: string, + description: string, + dst: ConfigAndDST + ): string { + this.cacheData = this.modelerService.getEncoded(); + + let data = JSON.parse(JSON.stringify(this.cacheData)); + + // to ensure that the title and description are inside the SVG container and do not overlap with any elements, + // we change the confines of the SVG viewbox + let viewBoxIndex = data.indexOf('width="'); + + // tslint:disable-next-line:prefer-const + let { width, height, viewBox } = this.viewBoxCoordinates(data); + + let xLeft; + let xRight; + let yUp; + let yDown; + let bounds; + const splitViewBox = viewBox.split(/\s/); + + height += 80; + xLeft = +splitViewBox[0]; + yUp = +splitViewBox[1]; + xRight = +splitViewBox[2]; + yDown = +splitViewBox[3]; + + if (xRight < 300) { + xRight += 300; + width += 300; + } + + // to display the title and description in the SVG-file, we need to add a container for our text-elements + const { insertText, extraHeight } = createTitleAndDescriptionSVGElement( + title, + description, + xLeft, + yUp, + width + ); + height += extraHeight; + + bounds = + 'width="' + + width + + '" height=" ' + + height + + '" viewBox="' + + xLeft + + ' ' + + (yUp - 80) + + ' ' + + xRight + + ' ' + + (yDown + 30); + const dataStart = data.substring(0, viewBoxIndex); + viewBoxIndex = data.indexOf('" version'); + const dataEnd = data.substring(viewBoxIndex); + dataEnd.substring(viewBoxIndex); + + data = dataStart + bounds + dataEnd; + + let insertIndex = data.indexOf(''); + if (insertIndex < 0) { + insertIndex = data.indexOf('version="1.2">') + 14; + } else { + insertIndex += 7; + } + + data = [ + data.slice(0, insertIndex), + insertText, + data.slice(insertIndex), + ].join(''); + + data = this.appendDST(data, dst); + + return encodeURIComponent(data); + } + + private viewBoxCoordinates(svg: string): { + width: number; + height: number; + viewBox: string; + } { + const ViewBoxCoordinate = + /width="([^"]+)"\s+height="([^"]+)"\s+viewBox="([^"]+)"/; + const match = svg.match(ViewBoxCoordinate); + if (match) { + return { width: +match[1], height: +match[2], viewBox: match[3] }; + } + return { width: 0, height: 0, viewBox: '' }; + } + + private appendDST(data: string, dst: ConfigAndDST): string { + data += '\n'; + return data; + } +} diff --git a/src/app/general-settings/component/general-settings.component.html b/src/app/general-settings/component/general-settings.component.html new file mode 100644 index 00000000..9f8191de --- /dev/null +++ b/src/app/general-settings/component/general-settings.component.html @@ -0,0 +1,9 @@ +

Autosave

+
+ + +
+
+
+
+
diff --git a/src/app/general-settings/component/general-settings.component.scss b/src/app/general-settings/component/general-settings.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/general-settings/component/general-settings.component.spec.ts b/src/app/general-settings/component/general-settings.component.spec.ts new file mode 100644 index 00000000..b48a3cfa --- /dev/null +++ b/src/app/general-settings/component/general-settings.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GeneralSettingsComponent } from 'src/app/general-settings/component/general-settings.component'; + +describe('GeneralSettingsComponent', () => { + let component: GeneralSettingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [GeneralSettingsComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(GeneralSettingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/general-settings/component/general-settings.component.ts b/src/app/general-settings/component/general-settings.component.ts new file mode 100644 index 00000000..0f1c5f1b --- /dev/null +++ b/src/app/general-settings/component/general-settings.component.ts @@ -0,0 +1,10 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-general-settings', + templateUrl: './general-settings.component.html', + styleUrls: ['./general-settings.component.scss'], +}) +export class GeneralSettingsComponent implements OnInit { + ngOnInit(): void {} +} diff --git a/src/app/header/component/header-buttons.component.html b/src/app/header/component/header-buttons.component.html new file mode 100644 index 00000000..03636007 --- /dev/null +++ b/src/app/header/component/header-buttons.component.html @@ -0,0 +1,115 @@ +
+
+ + + + + + + + +
+
+ + + +
+ {{ currentStepNumber | async }}/{{ maxStepNumber | async }} +
+
+
diff --git a/src/app/header/component/header-buttons.component.scss b/src/app/header/component/header-buttons.component.scss new file mode 100644 index 00000000..4912058a --- /dev/null +++ b/src/app/header/component/header-buttons.component.scss @@ -0,0 +1,72 @@ +.materialIconButton { + font-size: 12pt; +} + +span { + font-size: 12pt; + color: #666666; +} + +#buttonPreviousStep { + margin-left: 6.7rem; +} + +#replayStep { + padding: 1px; + margin-top: -2.38em; + margin-left: 5.6em; +} +.ButtonContainer { + margin-top: 0.2em; + position: relative; +} + +#dictionaryButton { + opacity: 0.2; + pointer-events: none; +} + +#presentationModeButtons { + height: 43px; +} + +.borderRight { + border-right: black solid 2px !important; +} + +#buttonImport, +#export, +#buttonImageDownloads, +#dictionaryButton, +#buttonStartReplay, +#buttonStopReplay, +#buttonNextStep, +#buttonPreviousStep, +#keyboardShortcutInfoButton, +.toggleDescriptionButton, +#settingsButton { + background-color: white; + border: none; +} + +#buttonImport:hover, +#importConfigurationButton:hover, +#exportConfigurationButton:hover, +#export:hover, +#buttonImageDownloads:hover, +#buttonSVG:hover, +#buttonPNG:hover, +#buttonStartReplay:hover, +#buttonStopReplay:hover, +#buttonNextStep:hover, +#buttonPreviousStep:hover, +#brokenDSTDialogButtonCancel:hover, +#closeNoContentOnCanvasInfo:hover, +#keyboardShortcutInfoDialogButtonCancel:hover, +#settingsButton:hover, +.toggleDescriptionButton:hover, +#downloadDialogCancelButton:hover, +#keyboardShortcutInfoButton:hover { + cursor: pointer; + color: #42aebb; +} diff --git a/src/app/header/component/header-buttons.component.spec.ts b/src/app/header/component/header-buttons.component.spec.ts new file mode 100644 index 00000000..ba95a8b7 --- /dev/null +++ b/src/app/header/component/header-buttons.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeaderButtonsComponent } from './header-buttons.component'; + +describe('HeaderButtonsComponent', () => { + let component: HeaderButtonsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [HeaderButtonsComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HeaderButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/header/component/header-buttons.component.ts b/src/app/header/component/header-buttons.component.ts new file mode 100644 index 00000000..3a5388e9 --- /dev/null +++ b/src/app/header/component/header-buttons.component.ts @@ -0,0 +1,183 @@ +import { Component, Input } from '@angular/core'; +import { SettingsService } from '../../settings-module/service/settings.service'; +import { TitleService } from '../../titleAndDescription/service/title.service'; +import { ModelerService } from '../../modeler/service/modeler.service'; +import { Observable } from 'rxjs'; +import { ReplayStateService } from '../../replay-service/replay-state.service'; +import { DirtyFlagService } from '../../dirtyFlag-service/dirty-flag.service'; +import { + ExportDialogData, + ExportOption, +} from '../../export/component/export-dialog/exportDialogData'; +import { MatDialogConfig } from '@angular/material/dialog'; +import { ExportDialogComponent } from '../../export/component/export-dialog/export-dialog.component'; +import { InfoDialogData } from '../../dialog/component/confirm-dialog/infoDialogData'; +import { InfoDialogComponent } from '../../dialog/component/confirm-dialog/info-dialog.component'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { DialogService } from '../../dialog/service/dialog.service'; +import { ReplayService } from '../../replay-service/replay.service'; +import { ExportService } from '../../export/service/export.service'; +import { ImportDomainStoryService } from '../../import-service/import-domain-story.service'; + +@Component({ + selector: 'app-header-buttons', + templateUrl: './header-buttons.component.html', + styleUrls: ['./header-buttons.component.scss'], +}) +export class HeaderButtonsComponent { + isReplay: Observable; + isDirty: Observable; + currentStepNumber: Observable; + maxStepNumber: Observable; + + showDescription: Observable; + + constructor( + private settingsService: SettingsService, + private titleService: TitleService, + private modelerService: ModelerService, + private replayStateService: ReplayStateService, + private dirtyFlagService: DirtyFlagService, + private elementRegistryService: ElementRegistryService, + private dialogService: DialogService, + private replayService: ReplayService, + private exportService: ExportService, + private importService: ImportDomainStoryService + ) { + this.isReplay = this.replayStateService.getReplayOnObservable(); + this.isDirty = this.dirtyFlagService.dirtySubject; + this.currentStepNumber = + this.replayService.getCurrentStepNumberObservable(); + this.maxStepNumber = this.replayService.getMaxStepNumberObservable(); + this.showDescription = this.titleService.getShowDescriptionObservable(); + + this.setShortcuts(); + } + + private setShortcuts(): void { + document.onkeydown = (e: KeyboardEvent) => { + if (e.ctrlKey && e.key === 's') { + this.exportService.downloadDST(); + e.preventDefault(); + e.stopPropagation(); + } + if (e.ctrlKey && e.key === 'l') { + // @ts-ignore + document.getElementById('import').click(); + e.preventDefault(); + e.stopPropagation(); + } + }; + } + + public import(): void { + // @ts-ignore + const filename = document.getElementById('import').files[0].name; + if (filename.endsWith('.dst')) { + this.importService.importDST( + // @ts-ignore + document.getElementById('import').files[0], + filename, + false + ); + } else if (filename.endsWith('.svg')) { + this.importService.importDST( + // @ts-ignore + document.getElementById('import').files[0], + filename, + true + ); + } + this.modelerService.commandStackChanged(); + } + + public openSettings(): void { + this.settingsService.open(); + } + + public setShowDescription(show: boolean): void { + this.titleService.setShowDescription(show); + } + + public openDownloadDialog(): void { + if (this.exportService.isDomainStoryExportable()) { + const option1 = new ExportOption('DST', () => + this.exportService.downloadDST() + ); + const option2 = new ExportOption('SVG', () => + this.exportService.downloadSVG() + ); + const option3 = new ExportOption('PNG', () => + this.exportService.downloadPNG() + ); + const option4 = new ExportOption('HTML', () => + this.exportService.downloadHTMLPresentation() + ); + + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + config.data = new ExportDialogData('Export', [ + option1, + option2, + option3, + option4, + ]); + + this.dialogService.openDialog(ExportDialogComponent, config); + } else { + this.openExportErrorDialog(); + } + } + + private openExportErrorDialog(): void { + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + + const title = 'Export Error'; + const text = 'There currently is no DomainStory to export.'; + config.data = new InfoDialogData(title, text, true); + + this.dialogService.openDialog(InfoDialogComponent, config); + } + + public openKeyboardShortcutsDialog(): void { + const title = 'Keyboard shortcuts'; + const shortCutText = + 'Undo:\t\t\tctrl + Z \n' + + 'Redo:\t\t\tctrl + Y OR ctrl + shift + Z\n' + + 'Select All:\t\tctrl + A\n' + + 'Export as DST:\t\tctrl + S\n' + + 'Import Domain Story: \tctrl + L\n' + + 'Search for text:\tctrl + F\n' + + 'Direct editing:\t\tE\n' + + 'Hand tool:\t\tH\n' + + 'Lasso tool:\t\tL\n' + + 'Space tool:\t\tS'; + + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + + config.data = new InfoDialogData(title, shortCutText, true); + + this.dialogService.openDialog(InfoDialogComponent, config); + } + + public startReplay(): void { + this.replayService.startReplay(); + } + + public stopReplay(): void { + this.replayService.stopReplay(); + } + + public previousStep(): void { + this.replayService.previousStep(); + } + + public nextStep(): void { + this.replayService.nextStep(); + } +} diff --git a/src/app/header/component/header.component.html b/src/app/header/component/header.component.html new file mode 100644 index 00000000..fc3622ab --- /dev/null +++ b/src/app/header/component/header.component.html @@ -0,0 +1,9 @@ +
+ + +
+ +
+ Domain: + default +
diff --git a/src/app/header/component/header.component.scss b/src/app/header/component/header.component.scss new file mode 100644 index 00000000..2228f76d --- /dev/null +++ b/src/app/header/component/header.component.scss @@ -0,0 +1,8 @@ +#headlineAndButtons { + display: grid; + grid-template-columns: auto 420px 3px; +} + +#subHeader { + font-size: 10pt; +} diff --git a/src/app/header/component/header.component.spec.ts b/src/app/header/component/header.component.spec.ts new file mode 100644 index 00000000..85d3bd70 --- /dev/null +++ b/src/app/header/component/header.component.spec.ts @@ -0,0 +1,66 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeaderComponent } from 'src/app/header/component/header.component'; +import { TitleService } from '../../titleAndDescription/service/title.service'; +import { MockService } from 'ng-mocks'; +import { ReplayService } from '../../replay-service/replay.service'; +import { ImportDomainStoryService } from '../../import-service/import-domain-story.service'; +import { ExportService } from '../../export/service/export.service'; +import { ModelerService } from '../../modeler/service/modeler.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { DialogService } from '../../dialog/service/dialog.service'; +import { SettingsService } from '../../settings-module/service/settings.service'; + +describe('HeaderComponent', () => { + let component: HeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [HeaderComponent], + providers: [ + { + provide: TitleService, + }, + { + provide: ReplayService, + useValue: MockService(ReplayService), + }, + { + provide: ImportDomainStoryService, + useValue: MockService(ImportDomainStoryService), + }, + { + provide: ExportService, + useValue: MockService(ExportService), + }, + { + provide: ModelerService, + useValue: MockService(ModelerService), + }, + { + provide: ElementRegistryService, + useValue: MockService(ElementRegistryService), + }, + { + provide: DialogService, + useValue: MockService(DialogService), + }, + { + provide: SettingsService, + useValue: MockService(SettingsService), + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/header/component/header.component.ts b/src/app/header/component/header.component.ts new file mode 100644 index 00000000..ed9d7e95 --- /dev/null +++ b/src/app/header/component/header.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ModelerService } from '../../modeler/service/modeler.service'; +import { TitleService } from '../../titleAndDescription/service/title.service'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'], +}) +export class HeaderComponent implements OnInit { + showDescription: Observable; + + constructor( + private titleService: TitleService, + private modelerService: ModelerService + ) { + this.showDescription = this.titleService.getShowDescriptionObservable(); + } + + ngOnInit(): void { + this.modelerService.postInit(); + } +} diff --git a/src/app/header/header-dialog/header-dialog.component.html b/src/app/header/header-dialog/header-dialog.component.html new file mode 100644 index 00000000..c9786c53 --- /dev/null +++ b/src/app/header/header-dialog/header-dialog.component.html @@ -0,0 +1,17 @@ + +
+ + Title: + + +
+ + Description: + + +
+
+ + + + diff --git a/src/app/header/header-dialog/header-dialog.component.scss b/src/app/header/header-dialog/header-dialog.component.scss new file mode 100644 index 00000000..c1f77ea0 --- /dev/null +++ b/src/app/header/header-dialog/header-dialog.component.scss @@ -0,0 +1,3 @@ +.dialogWidth { + width: 400px; +} diff --git a/src/app/header/header-dialog/header-dialog.component.spec.ts b/src/app/header/header-dialog/header-dialog.component.spec.ts new file mode 100644 index 00000000..50186678 --- /dev/null +++ b/src/app/header/header-dialog/header-dialog.component.spec.ts @@ -0,0 +1,43 @@ +import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; + +import { HeaderDialogComponent } from 'src/app/header/header-dialog/header-dialog.component'; +import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; +import { MockModule, MockService } from 'ng-mocks'; +import { FormBuilder } from '@angular/forms'; +import { ReplayService } from '../../replay-service/replay.service'; +import { TitleService } from '../../titleAndDescription/service/title.service'; +import { Title } from '@angular/platform-browser'; + +xdescribe('HeaderDialogComponent', () => { + let component: HeaderDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [HeaderDialogComponent], + imports: [MockModule(MatDialogModule)], + providers: [ + { + provide: ReplayService, + useValue: MockService(ReplayService), + }, + { + provide: FormBuilder, + }, + { + provide: MatDialogRef, + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HeaderDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/header/header-dialog/header-dialog.component.ts b/src/app/header/header-dialog/header-dialog.component.ts new file mode 100644 index 00000000..5730b585 --- /dev/null +++ b/src/app/header/header-dialog/header-dialog.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit } from '@angular/core'; +import { MatDialogRef } from '@angular/material/dialog'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { TitleService } from 'src/app/titleAndDescription/service/title.service'; + +@Component({ + selector: 'app-header-dialog', + templateUrl: './header-dialog.component.html', + styleUrls: ['./header-dialog.component.scss'], +}) +export class HeaderDialogComponent implements OnInit { + form: FormGroup; + title: string; + description: string; + + constructor( + private fb: FormBuilder, + private dialogRef: MatDialogRef, + private titleService: TitleService + ) { + this.title = + this.titleService.getTitle() === '< name of this Domain Story >' + ? '' + : this.titleService.getTitle(); + this.description = this.titleService.getDescription(); + + this.form = this.fb.group({ + title: [this.title, []], + description: [this.description, []], + }); + } + + ngOnInit(): void {} + + save(): void { + this.titleService.updateTitleAndDescription( + this.form.get('title')?.value, + this.form.get('description')?.value, + true + ); + this.dialogRef.close(); + } + + close(): void { + this.dialogRef.close(); + } +} diff --git a/src/app/import-service/import-domain-story.service.spec.ts b/src/app/import-service/import-domain-story.service.spec.ts new file mode 100644 index 00000000..7665d15e --- /dev/null +++ b/src/app/import-service/import-domain-story.service.spec.ts @@ -0,0 +1,53 @@ +import { TestBed } from '@angular/core/testing'; + +import { ImportDomainStoryService } from 'src/app/import-service/import-domain-story.service'; +import { ElementRegistryService } from '../elementRegistry-service/element-registry.service'; +import { IconDictionaryService } from '../domain-configuration/service/icon-dictionary.service'; +import { DirtyFlagService } from '../dirtyFlag-service/dirty-flag.service'; +import { ImportRepairService } from './import-repair.service'; +import { TitleService } from '../titleAndDescription/service/title.service'; +import { RendererService } from '../renderer-service/renderer.service'; +import { MockService } from 'ng-mocks'; +import { DialogService } from '../dialog/service/dialog.service'; + +describe('ImportDomainStoryService', () => { + let service: ImportDomainStoryService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { + provide: ElementRegistryService, + useValue: MockService(ElementRegistryService), + }, + { + provide: IconDictionaryService, + useValue: MockService(IconDictionaryService), + }, + { + provide: DirtyFlagService, + }, + { + provide: ImportRepairService, + useValue: MockService(ImportRepairService), + }, + { + provide: TitleService, + }, + { + provide: RendererService, + useValue: MockService(RendererService), + }, + { + provide: DialogService, + useValue: MockService(DialogService), + }, + ], + }); + service = TestBed.inject(ImportDomainStoryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/import-service/import-domain-story.service.ts b/src/app/import-service/import-domain-story.service.ts new file mode 100644 index 00000000..866ef5c9 --- /dev/null +++ b/src/app/import-service/import-domain-story.service.ts @@ -0,0 +1,346 @@ +import { Injectable, OnDestroy } from '@angular/core'; +import { DirtyFlagService } from 'src/app/dirtyFlag-service/dirty-flag.service'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; +import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { TitleService } from 'src/app/titleAndDescription/service/title.service'; +import { ImportRepairService } from 'src/app/import-service/import-repair.service'; +import { Subscription } from 'rxjs'; +import { RendererService } from 'src/app/renderer-service/renderer.service'; +import { BusinessObject } from 'src/app/common/domain/businessObject'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { DialogService } from '../dialog/service/dialog.service'; +import { InfoDialogComponent } from '../dialog/component/confirm-dialog/info-dialog.component'; +import { MatDialogConfig } from '@angular/material/dialog'; +import { InfoDialogData } from '../dialog/component/confirm-dialog/infoDialogData'; + +@Injectable({ + providedIn: 'root', +}) +export class ImportDomainStoryService implements OnDestroy { + titleSubscription: Subscription; + descriptionSubscription: Subscription; + + private titleInputLast = ''; + private descriptionInputLast = ''; + + public title = ''; + public description = ''; + + constructor( + private elementRegistryService: ElementRegistryService, + private iconDictionaryService: IconDictionaryService, + private dirtyFlagService: DirtyFlagService, + private importRepairService: ImportRepairService, + private titleService: TitleService, + private rendererService: RendererService, + private dialogService: DialogService + ) { + this.titleSubscription = this.titleService + .getTitleObservable() + .subscribe((title: string) => { + this.title = title; + }); + this.descriptionSubscription = this.titleService + .getDescriptionObservable() + .subscribe((description: string) => { + this.description = description; + }); + } + + ngOnDestroy(): void { + this.titleSubscription.unsubscribe(); + this.descriptionSubscription.unsubscribe(); + } + + public restoreTitleFromFileName(filename: string, isSVG: boolean): string { + let title; + + const dstRegex = /_\d+-\d+-\d+( ?_?-?\(\d+\))?(-?\d)?.dst/; + const svgRegex = /_\d+-\d+-\d+( ?_?-?\(\d+\))?(-?\d)?.dst.svg/; + + const dstSuffix = '.dst'; + const svgSuffix = '.svg'; + + let filenameWithoutDateSuffix = filename.replace( + isSVG ? svgRegex : dstRegex, + '' + ); + if (filenameWithoutDateSuffix.includes(isSVG ? svgSuffix : dstSuffix)) { + filenameWithoutDateSuffix = filenameWithoutDateSuffix.replace( + isSVG ? svgSuffix : dstSuffix, + '' + ); + } + title = filenameWithoutDateSuffix; + return title; + } + + public importDST(input: Blob, filename: string, isSVG: boolean): void { + this.titleInputLast = ''; + this.descriptionInputLast = ''; + + const reader = new FileReader(); + const titleText = this.restoreTitleFromFileName(filename, isSVG); + + // no need to put this on the commandStack + this.titleService.updateTitleAndDescription(titleText, null, false); + + reader.onloadend = (e) => { + if (e && e.target) { + this.readerFunction(e.target.result, isSVG); + } + }; + + reader.readAsText(input); + } + + private readerFunction( + text: string | ArrayBuffer | null, + isSVG: boolean + ): void { + let dstText; + if (typeof text === 'string') { + if (isSVG) { + dstText = this.removeXMLComments(text); + } else { + dstText = text; + } + + let elements; + let config; + let configChanged = false; + + let dstAndConfig; + try { + dstAndConfig = JSON.parse(dstText); + } catch (e) { + if (!isSVG) { + // this.showBrokenDSTDialog(); + } else { + // this.showBrokenSVGDialog(); + } + } + + if (dstAndConfig == null) { + return; + } + + if (dstAndConfig.domain) { + config = JSON.parse(dstAndConfig.domain); + configChanged = this.configHasChanged(config); + elements = JSON.parse(dstAndConfig.dst); + } else { + if (dstAndConfig.config) { + config = JSON.parse(dstAndConfig.config); + configChanged = this.configHasChanged(config); + elements = JSON.parse(dstAndConfig.dst); + } else { + elements = JSON.parse(dstText); + } + } + + let lastElement = elements.pop(); + let importVersionNumber = lastElement; + + if (lastElement.version) { + lastElement = elements.pop(); + } + /* TODO + if (importVersionNumber.version) { + importVersionNumber = importVersionNumber.version as string; + } else { + importVersionNumber = '?'; + } + const versionPrefix = +importVersionNumber.substring(0, importVersionNumber.lastIndexOf('.')); + if (versionPrefix <= 0.5) { + this.openPreviousV050Dialog(versionPrefix); + elements = this.importRepairService.updateCustomElementsPreviousV050(elements); + }*/ + + const allReferences = + this.importRepairService.checkElementReferencesAndRepair(elements); + if (!allReferences) { + // this.alertService.showBrokenDSTDialog(); + } + + this.titleService.updateTitleAndDescription( + null, + lastElement.info, + false + ); + + this.importRepairService.adjustPositions(elements); + + this.updateIconRegistries(elements, config); + this.rendererService.importStory(elements, configChanged, config); + } + } + + private removeXMLComments(xmlText: string): string { + xmlText = xmlText.substring(xmlText.indexOf('')); + while (xmlText.includes('')) { + xmlText = xmlText.replace('', ''); + } + xmlText = xmlText.replace('', ''); + xmlText = xmlText.replace('', ''); + return xmlText; + } + + public configHasChanged(domainConfiguration: DomainConfiguration): boolean { + const newActorsDict = new Dictionary(); + const newWorkObjectsDict = new Dictionary(); + + newActorsDict.addEach(domainConfiguration.actors); + newWorkObjectsDict.addEach(domainConfiguration.workObjects); + + const newActorKeys = newActorsDict.keysArray(); + const newWorkObjectKeys = newWorkObjectsDict.keysArray(); + const currentActorKeys = this.iconDictionaryService.getTypeDictionaryKeys( + elementTypes.ACTOR + ); + const currentWorkobjectKeys = + this.iconDictionaryService.getTypeDictionaryKeys(elementTypes.WORKOBJECT); + + let changed = false; + + for (let i = 0; i < newActorKeys.length; i++) { + if ( + currentActorKeys[i] !== newActorKeys[i] && + currentActorKeys[i] !== elementTypes.ACTOR + newActorKeys[i] + ) { + changed = true; + i = newActorKeys.length; + } + } + if (!changed) { + for (let i = 0; i < newWorkObjectKeys.length; i++) { + if ( + currentWorkobjectKeys[i] !== newWorkObjectKeys[i] && + currentWorkobjectKeys[i] !== + elementTypes.WORKOBJECT + newWorkObjectKeys[i] + ) { + changed = true; + i = newWorkObjectKeys.length; + } + } + } + return changed; + } + + private updateIconRegistries( + elements: BusinessObject[], + config: DomainConfiguration + ): void { + const actorIcons = this.getElementsOfType(elements, 'actor'); + const workObjectIcons = this.getElementsOfType(elements, 'workObject'); + + const customIcons: { name: string; src: string }[] = []; + + elements.forEach((element) => { + const name = element.type + .replace(elementTypes.ACTOR, '') + .replace(elementTypes.WORKOBJECT, ''); + if ( + (element.type.includes(elementTypes.ACTOR) || + element.type.includes(elementTypes.WORKOBJECT)) && + !this.iconDictionaryService.getFullDictionary().has(name) + ) { + let src = ''; + if (element.type.includes(elementTypes.ACTOR)) { + const actors = new Dictionary(); + actors.addEach(config.actors); + src = actors.get(name); + } + if (element.type.includes(elementTypes.WORKOBJECT)) { + const workobjects = new Dictionary(); + workobjects.addEach(config.workObjects); + src = workobjects.get(name); + } + this.iconDictionaryService.registerIcon( + 'icon-domain-story-' + name.toLowerCase(), + element.type + ); + customIcons.push({ name, src }); + } + }); + + const sheetEl = document.getElementById('iconsCss'); + + customIcons.forEach((custom) => { + const iconStyle = + '.icon-domain-story-' + + custom.name + + '::before{' + + ' display: block;' + + ' content: url("data:image/svg+xml;utf8,' + + this.wrapSRCInSVG(custom.src) + + '");' + + ' margin: 3px;}'; + // @ts-ignore + sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length); + }); + + if ( + !this.iconDictionaryService.allInTypeDictionary( + elementTypes.ACTOR, + actorIcons + ) + ) { + this.iconDictionaryService.registerElementIcons( + elementTypes.ACTOR, + actorIcons + ); + } + if ( + !this.iconDictionaryService.allInTypeDictionary( + elementTypes.WORKOBJECT, + workObjectIcons + ) + ) { + this.iconDictionaryService.registerElementIcons( + elementTypes.WORKOBJECT, + workObjectIcons + ); + } + } + + private wrapSRCInSVG(src: string): string { + // @ts-ignore + const svg = + ""; + return svg; + } + + private getElementsOfType( + elements: BusinessObject[], + type: string + ): BusinessObject[] { + const elementOfType: any = []; + elements.forEach((element) => { + if (element.type.includes(elementTypes.DOMAINSTORY + type)) { + elementOfType.push(element); + } + }); + return elementOfType; + } + + private openPreviousV050Dialog(version: number): void { + const title = 'Compatability-Warning'; + const text = + 'The uploaded Domain-Story is from version ' + + version + + '. There may be problems with the default workobjects contained in the story.'; + + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + + config.data = new InfoDialogData(title, text, true); + + this.dialogService.openDialog(InfoDialogComponent, config); + } +} diff --git a/src/app/import-service/import-repair.service.spec.ts b/src/app/import-service/import-repair.service.spec.ts new file mode 100644 index 00000000..6d60a0e7 --- /dev/null +++ b/src/app/import-service/import-repair.service.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from '@angular/core/testing'; + +import { ImportRepairService } from 'src/app/import-service/import-repair.service'; +import { ElementRegistryService } from '../elementRegistry-service/element-registry.service'; + +describe('ImportRepairService', () => { + let service: ImportRepairService; + + beforeEach(() => { + TestBed.configureTestingModule({ providers: [ElementRegistryService] }); + service = TestBed.inject(ImportRepairService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/import-service/import-repair.service.ts b/src/app/import-service/import-repair.service.ts new file mode 100644 index 00000000..9ee65f7f --- /dev/null +++ b/src/app/import-service/import-repair.service.ts @@ -0,0 +1,166 @@ +import { Injectable } from '@angular/core'; +import { assign } from 'min-dash'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { BusinessObject } from 'src/app/common/domain/businessObject'; +import { Waypoint } from 'src/app/common/domain/waypoint'; +import { ActivityBusinessObject } from '../common/domain/activityBusinessObject'; + +@Injectable({ + providedIn: 'root', +}) +export class ImportRepairService { + constructor(private elementRegistryService: ElementRegistryService) {} + + public checkElementReferencesAndRepair(elements: BusinessObject[]): boolean { + const activities: ActivityBusinessObject[] = []; + const objectIDs: string[] = []; + + let complete = true; + + elements.forEach((element) => { + const type = element.type; + if (type === elementTypes.ACTIVITY || type === elementTypes.CONNECTION) { + activities.push(element as ActivityBusinessObject); + } else { + objectIDs.push(element.id); + } + }); + + activities.forEach((activity) => { + const source = activity.source; + const target = activity.target; + // @ts-ignore + if (!objectIDs.includes(source.id) || !objectIDs.includes(target.id)) { + complete = false; + const activityIndex = elements.indexOf(activity); + elements = elements.splice(activityIndex, 1); + } + }); + return complete; + } + + // when importing a domain-story, the elements that are visually inside a group are not yet associated with it. + // to ensure they are correctly associated, we add them to the group + public correctGroupChildren(): void { + const allObjects = this.elementRegistryService.getAllCanvasObjects(); + const groups = this.elementRegistryService.getAllGroups(); + + groups.forEach((group) => { + const parent = group.parent; + // @ts-ignore + parent.children.slice().forEach((innerShape) => { + if (innerShape.id !== group.id) { + if ( + innerShape.x >= group.x && + innerShape.x <= group.x + group.width + ) { + if ( + innerShape.y >= group.y && + innerShape.y <= group.y + group.height + ) { + innerShape.parent = group; + // @ts-ignore + if (!group.children.includes(innerShape)) { + // @ts-ignore + group.children.push(innerShape); + } + } + } + } + }); + }); + allObjects.forEach((shape) => { + const businessObject = shape.businessObject; + if ( + shape && + 'type' in shape.parent && + shape.parent.type === elementTypes.GROUP + ) { + assign(businessObject, { + parent: shape.parent.id, + }); + } + }); + } + + /** + * Ensure backwards compatibility. + * Previously Document had no special name and was just addressed as workObject + * Bubble was renamed to Conversation + */ + + public updateCustomElementsPreviousV050( + elements: BusinessObject[] + ): BusinessObject[] { + for (const element of elements) { + if (element.type === elementTypes.WORKOBJECT) { + element.type = elementTypes.WORKOBJECT + 'Document'; + } else if (element.type === elementTypes.WORKOBJECT + 'Bubble') { + element.type = elementTypes.WORKOBJECT + 'Conversation'; + } + } + return elements; + } + + public adjustPositions(elements: BusinessObject[]): void { + let xLeft = 0; + let yUp = 0; + let isFirst = true; + + elements.forEach((element) => { + let elXLeft; + let elYUp; + if ( + element.type !== elementTypes.ACTIVITY && + element.type !== elementTypes.CONNECTION + ) { + if (isFirst) { + // @ts-ignore + xLeft = parseFloat(element.x); + // @ts-ignore + yUp = parseFloat(element.y); + isFirst = false; + } + // @ts-ignore + elXLeft = parseFloat(element.x); + // @ts-ignore + elYUp = parseFloat(element.y); + if (elXLeft < xLeft) { + xLeft = elXLeft; + } + if (elYUp < yUp) { + yUp = elYUp; + } + } + }); + + if (xLeft < 75 || xLeft > 150 || yUp < 0 || yUp > 50) { + // add Padding for the Palette and the top + xLeft -= 75; + yUp -= 50; + + elements.forEach((element) => { + if ( + element.type === elementTypes.ACTIVITY || + element.type === elementTypes.CONNECTION + ) { + const waypoints = (element as ActivityBusinessObject).waypoints; + // @ts-ignore + waypoints.forEach((point: Waypoint) => { + point.x -= xLeft; + point.y -= yUp; + + if (point.original) { + point.original.x = point.x; + point.original.y = point.y; + } + }); + } else { + element.x -= xLeft; + element.y -= yUp; + } + }); + } + } +} diff --git a/src/app/label-dictionary/component/label-dictionary.component.html b/src/app/label-dictionary/component/label-dictionary.component.html new file mode 100644 index 00000000..8ac102de --- /dev/null +++ b/src/app/label-dictionary/component/label-dictionary.component.html @@ -0,0 +1,28 @@ +
+ + +
+
+
+ Actor List + + + +
+ +
+
+
+ Activity List + + +
+ +
+
diff --git a/src/app/label-dictionary/component/label-dictionary.component.scss b/src/app/label-dictionary/component/label-dictionary.component.scss new file mode 100644 index 00000000..7d85e9f2 --- /dev/null +++ b/src/app/label-dictionary/component/label-dictionary.component.scss @@ -0,0 +1,31 @@ +.labelDictionary { + display: grid; + grid-template-columns: 50% 1px auto; + top: 0; + bottom: 0; + max-height: 100%; +} + +.line { + border-left: 1px solid #ccc; + padding-right: 5px; + top: 0; + bottom: 0; + overflow-y: hidden; +} + +.icon { + width: 36px; + height: 36px; +} + +.inputText { + margin-top: 20px; + width: 75%; +} + +.listEntry { + width: 100%; + display: block; + height: 40px; +} diff --git a/src/app/label-dictionary/component/label-dictionary.component.spec.ts b/src/app/label-dictionary/component/label-dictionary.component.spec.ts new file mode 100644 index 00000000..bf0c9981 --- /dev/null +++ b/src/app/label-dictionary/component/label-dictionary.component.spec.ts @@ -0,0 +1,32 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LabelDictionaryComponent } from 'src/app/label-dictionary/component/label-dictionary.component'; +import { MockService } from 'ng-mocks'; +import { LabelDictionaryService } from '../service/label-dictionary.service'; + +describe('LabelDictionaryComponent', () => { + let component: LabelDictionaryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [LabelDictionaryComponent], + providers: [ + { + provide: LabelDictionaryService, + useValue: MockService(LabelDictionaryService), + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LabelDictionaryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/label-dictionary/component/label-dictionary.component.ts b/src/app/label-dictionary/component/label-dictionary.component.ts new file mode 100644 index 00000000..b31a3065 --- /dev/null +++ b/src/app/label-dictionary/component/label-dictionary.component.ts @@ -0,0 +1,73 @@ +import { ChangeDetectorRef, Component, OnInit } from '@angular/core'; +import { LabelDictionaryService } from '../service/label-dictionary.service'; +import { WorkObjectLabelEntry } from '../domain/workObjectLabelEntry'; +import { LabelEntry } from '../domain/labelEntry'; +import { BehaviorSubject } from 'rxjs'; + +@Component({ + selector: 'app-label-dictionary', + templateUrl: './label-dictionary.component.html', + styleUrls: ['./label-dictionary.component.scss'], +}) +export class LabelDictionaryComponent implements OnInit { + workobjectEntriesSubject: BehaviorSubject; + activityEntriesSubject: BehaviorSubject; + + workObjectEntries: WorkObjectLabelEntry[]; + activityEntries: LabelEntry[]; + + constructor(private labelDictionaryService: LabelDictionaryService) { + this.labelDictionaryService.createLabelDictionaries(); + this.workObjectEntries = this.labelDictionaryService.getWorkObjectLabels(); + this.activityEntries = this.labelDictionaryService.getActivityLabels(); + + this.workobjectEntriesSubject = new BehaviorSubject(this.workObjectEntries); + this.activityEntriesSubject = new BehaviorSubject(this.activityEntries); + } + + ngOnInit(): void {} + + save(): void { + this.workObjectEntries = this.workobjectEntriesSubject.value; + this.activityEntries = this.activityEntriesSubject.value; + + const activityNames: string[] = []; + const originalActivityNames: string[] = []; + + const workObjectNames: string[] = []; + const originalWorkObjectNames: string[] = []; + + this.activityEntries + .filter((a) => a.name !== a.originalName) + .forEach((activity) => { + activityNames.push(activity.name); + originalActivityNames.push(activity.originalName); + }); + + this.workObjectEntries + .filter((w) => w.name !== w.originalName) + .forEach((workobject) => { + workObjectNames.push(workobject.name); + originalWorkObjectNames.push(workobject.originalName); + }); + + this.labelDictionaryService.massRenameLabels( + activityNames, + originalActivityNames, + workObjectNames, + originalWorkObjectNames + ); + } + + cancel(): void { + this.workObjectEntries.forEach((w) => { + w.name = w.originalName; + }); + this.activityEntries.forEach((a) => { + a.name = a.originalName; + }); + + this.workobjectEntriesSubject.next(this.workObjectEntries); + this.activityEntriesSubject.next(this.activityEntries); + } +} diff --git a/src/app/label-dictionary/domain/labelEntry.ts b/src/app/label-dictionary/domain/labelEntry.ts new file mode 100644 index 00000000..cc923c41 --- /dev/null +++ b/src/app/label-dictionary/domain/labelEntry.ts @@ -0,0 +1,4 @@ +export interface LabelEntry { + name: string; + originalName: string; +} diff --git a/src/app/label-dictionary/domain/workObjectLabelEntry.ts b/src/app/label-dictionary/domain/workObjectLabelEntry.ts new file mode 100644 index 00000000..07df60b0 --- /dev/null +++ b/src/app/label-dictionary/domain/workObjectLabelEntry.ts @@ -0,0 +1,6 @@ +import { LabelEntry } from './labelEntry'; +import { SafeUrl } from '@angular/platform-browser'; + +export interface WorkObjectLabelEntry extends LabelEntry { + icon: SafeUrl; +} diff --git a/src/app/label-dictionary/service/label-dictionary.service.spec.ts b/src/app/label-dictionary/service/label-dictionary.service.spec.ts new file mode 100644 index 00000000..6d12273f --- /dev/null +++ b/src/app/label-dictionary/service/label-dictionary.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { LabelDictionaryService } from 'src/app/label-dictionary/service/label-dictionary.service'; + +describe('LabelDictionaryService', () => { + let service: LabelDictionaryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(LabelDictionaryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/label-dictionary/service/label-dictionary.service.ts b/src/app/label-dictionary/service/label-dictionary.service.ts new file mode 100644 index 00000000..f295e224 --- /dev/null +++ b/src/app/label-dictionary/service/label-dictionary.service.ts @@ -0,0 +1,132 @@ +import { Injectable } from '@angular/core'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { elementTypes } from 'src/app/common/domain/elementTypes'; +import { MassNamingService } from 'src/app/label-dictionary/service/mass-naming.service'; +import { IconDictionaryService } from '../../domain-configuration/service/icon-dictionary.service'; +import { WorkObjectLabelEntry } from '../domain/workObjectLabelEntry'; +import { LabelEntry } from '../domain/labelEntry'; +import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; + +@Injectable({ + providedIn: 'root', +}) +export class LabelDictionaryService { + activityLabels: LabelEntry[] = []; + workObjektLabels: WorkObjectLabelEntry[] = []; + + constructor( + private massNamingService: MassNamingService, + private elementRegistryService: ElementRegistryService, + private iconDictionaryService: IconDictionaryService, + private domSanitizer: DomSanitizer + ) {} + + public createLabelDictionaries(): void { + this.activityLabels = []; + this.activityLabels = []; + this.workObjektLabels = []; + + const allObjects = this.elementRegistryService.getAllCanvasObjects(); + + allObjects.forEach((element) => { + const name = element.businessObject.name; + if ( + name && + name.length > 0 && + element.type.includes(elementTypes.ACTIVITY) && + !this.activityLabels.map((a) => a.name).includes(name) + ) { + this.activityLabels.push({ + name, + originalName: name, + }); + } else if ( + name && + name.length > 0 && + element.type.includes(elementTypes.WORKOBJECT) && + !this.workObjektLabels.map((e) => e.name).includes(name) + ) { + const iconName = element.type.replace(elementTypes.WORKOBJECT, ''); + const rawSrc = this.iconDictionaryService.getIconSource(iconName); + if (!rawSrc) { + return; + } + let icon: SafeUrl; + if (rawSrc.startsWith('data')) { + icon = this.domSanitizer.bypassSecurityTrustUrl(rawSrc); + } else { + icon = this.domSanitizer.bypassSecurityTrustUrl( + 'data:image/svg+xml,' + rawSrc + ); + } + this.workObjektLabels.push({ + name, + originalName: name, + icon, + }); + } + }); + this.activityLabels.sort((a, b) => { + return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); + }); + this.workObjektLabels.sort((a, b) => { + return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); + }); + } + + public cleanDictionaries(): void { + this.activityLabels = []; + this.workObjektLabels = []; + this.createLabelDictionaries(); + } + + public getActivityLabels(): LabelEntry[] { + return this.activityLabels.slice(); + } + + public getWorkObjectLabels(): WorkObjectLabelEntry[] { + return this.workObjektLabels.slice(); + } + + public massRenameLabels( + activityNames: string[], + originalActivityNames: string[], + workObjectNames: string[], + originalWorkObjectNames: string[] + ): void { + for (let i = 0; i < originalActivityNames.length; i++) { + if (!activityNames[i]) { + activityNames[i] = ''; + } + if ( + !( + activityNames[i].includes(originalActivityNames[i]) && + originalActivityNames[i].includes(activityNames[i]) + ) + ) { + this.massNamingService.massChangeNames( + originalActivityNames[i], + activityNames[i], + elementTypes.ACTIVITY + ); + } + } + for (let i = 0; i < originalWorkObjectNames.length; i++) { + if (!workObjectNames[i]) { + workObjectNames[i] = ''; + } + if ( + !( + workObjectNames[i].includes(originalWorkObjectNames[i]) && + originalWorkObjectNames[i].includes(workObjectNames[i]) + ) + ) { + this.massNamingService.massChangeNames( + originalWorkObjectNames[i], + workObjectNames[i], + elementTypes.WORKOBJECT + ); + } + } + } +} diff --git a/src/app/label-dictionary/service/mass-naming.service.spec.ts b/src/app/label-dictionary/service/mass-naming.service.spec.ts new file mode 100644 index 00000000..9c5f7e29 --- /dev/null +++ b/src/app/label-dictionary/service/mass-naming.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { MassNamingService } from 'src/app/label-dictionary/service/mass-naming.service'; + +describe('MassNamingService', () => { + let service: MassNamingService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(MassNamingService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/label-dictionary/service/mass-naming.service.ts b/src/app/label-dictionary/service/mass-naming.service.ts new file mode 100644 index 00000000..4d5d521d --- /dev/null +++ b/src/app/label-dictionary/service/mass-naming.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { CanvasObject } from 'src/app/common/domain/canvasObject'; + +@Injectable({ + providedIn: 'root', +}) +export class MassNamingService { + private commandStack: any; + + constructor(private elementRegistryService: ElementRegistryService) {} + + public setCommandStack(commandStack: any): void { + this.commandStack = commandStack; + } + + public massChangeNames( + oldValue: string, + newValue: string, + type: string + ): void { + const allRelevantObjects: CanvasObject[] = []; + + this.elementRegistryService.getAllCanvasObjects().forEach((element) => { + if ( + element.type.includes(type) && + element.businessObject.name === oldValue + ) { + allRelevantObjects.push(element); + } + }); + + const context = { + elements: allRelevantObjects, + newValue, + }; + + this.commandStack.execute('domainStoryObjects.massRename', context); + } +} diff --git a/src/app/modeler/component/activity-dialog/activity-dialog.component.html b/src/app/modeler/component/activity-dialog/activity-dialog.component.html new file mode 100644 index 00000000..d1665a3a --- /dev/null +++ b/src/app/modeler/component/activity-dialog/activity-dialog.component.html @@ -0,0 +1,30 @@ +

Edit Activity

+ + +
+
+ + number + + + + multiple +
+ + + +
+
+ + + + diff --git a/src/app/modeler/component/activity-dialog/activity-dialog.component.scss b/src/app/modeler/component/activity-dialog/activity-dialog.component.scss new file mode 100644 index 00000000..d208d7f3 --- /dev/null +++ b/src/app/modeler/component/activity-dialog/activity-dialog.component.scss @@ -0,0 +1,3 @@ +.shortWidth { + width: 106px; +} diff --git a/src/app/modeler/component/activity-dialog/activity-dialog.component.spec.ts b/src/app/modeler/component/activity-dialog/activity-dialog.component.spec.ts new file mode 100644 index 00000000..c0c6ed7f --- /dev/null +++ b/src/app/modeler/component/activity-dialog/activity-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; + +import { ActivityDialogComponent } from 'src/app/modeler/component/activity-dialog/activity-dialog.component'; +import { FormBuilder } from '@angular/forms'; + +xdescribe('ActivityDialogComponent', () => { + let component: ActivityDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ActivityDialogComponent], + }).compileComponents(); + }); + + beforeEach(inject([FormBuilder], (formBuilder: FormBuilder) => { + fixture = TestBed.createComponent(ActivityDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/modeler/component/activity-dialog/activity-dialog.component.ts b/src/app/modeler/component/activity-dialog/activity-dialog.component.ts new file mode 100644 index 00000000..ef88561d --- /dev/null +++ b/src/app/modeler/component/activity-dialog/activity-dialog.component.ts @@ -0,0 +1,63 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivityDialogData } from 'src/app/modeler/component/activity-dialog/activityDialogData'; +import { CanvasObject } from 'src/app/common/domain/canvasObject'; +import { ActivityCanvasObject } from '../../../common/domain/activityCanvasObject'; + +@Component({ + selector: 'app-activity-dialog', + templateUrl: './activity-dialog.component.html', + styleUrls: ['./activity-dialog.component.scss'], +}) +export class ActivityDialogComponent implements OnInit { + form: FormGroup; + activityLabel: string; + activityNumber: number | undefined; + numberIsAllowedMultipleTimes: boolean; + showNumberFields: boolean; + activity: ActivityCanvasObject; + + saveFN: any; + + constructor( + private fb: FormBuilder, + private dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) data: ActivityDialogData + ) { + this.activity = data.activity; + this.activityLabel = data.activity.businessObject.name; + this.numberIsAllowedMultipleTimes = data.numberIsAllowedMultipleTimes; + this.activityNumber = data.activity.businessObject.number; + this.showNumberFields = data.showNumberFields; + + this.saveFN = data.saveFN; + + this.form = this.fb.group({ + activityLabel: [this.activityLabel, []], + activityNumber: [this.activityNumber, []], + multipleNumbers: [this.numberIsAllowedMultipleTimes, []], + }); + } + + ngOnInit(): void {} + + onSubmit(): void { + this.numberIsAllowedMultipleTimes = !this.numberIsAllowedMultipleTimes; + this.form.patchValue({ + multipleNumbers: this.numberIsAllowedMultipleTimes, + }); + } + + save(): void { + this.saveFN({ + activity: this.activity, + ...this.form.value, + }); + this.dialogRef.close(); + } + + close(): void { + this.dialogRef.close(); + } +} diff --git a/src/app/modeler/component/activity-dialog/activityDialogData.ts b/src/app/modeler/component/activity-dialog/activityDialogData.ts new file mode 100644 index 00000000..0dc4dfe6 --- /dev/null +++ b/src/app/modeler/component/activity-dialog/activityDialogData.ts @@ -0,0 +1,21 @@ +import { ActivityCanvasObject } from '../../../common/domain/activityCanvasObject'; + +export class ActivityDialogData { + public activity: ActivityCanvasObject; + public numberIsAllowedMultipleTimes: boolean; + public showNumberFields: boolean; + + public saveFN: any; + + constructor( + activity: ActivityCanvasObject, + numberIsAllowedMultipleTimes: boolean, + showNumberFields: boolean, + saveFN: any + ) { + this.activity = activity; + this.numberIsAllowedMultipleTimes = numberIsAllowedMultipleTimes; + this.showNumberFields = showNumberFields; + this.saveFN = saveFN; + } +} diff --git a/src/app/modeler/component/modeler.component.html b/src/app/modeler/component/modeler.component.html new file mode 100644 index 00000000..b7b7f540 --- /dev/null +++ b/src/app/modeler/component/modeler.component.html @@ -0,0 +1 @@ +
diff --git a/src/app/modeler/component/modeler.component.scss b/src/app/modeler/component/modeler.component.scss new file mode 100644 index 00000000..f6fe8a29 --- /dev/null +++ b/src/app/modeler/component/modeler.component.scss @@ -0,0 +1,8 @@ +#canvas, +#canvas > div { + top: 0; + width: 100%; + height: 100%; + position: relative; + bottom: 0; +} diff --git a/src/app/modeler/component/modeler.component.spec.ts b/src/app/modeler/component/modeler.component.spec.ts new file mode 100644 index 00000000..59c2ec2e --- /dev/null +++ b/src/app/modeler/component/modeler.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModelerComponent } from 'src/app/modeler/component/modeler.component'; + +describe('ModelerComponent', () => { + let component: ModelerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ModelerComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ModelerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/modeler/component/modeler.component.ts b/src/app/modeler/component/modeler.component.ts new file mode 100644 index 00000000..40ab1aff --- /dev/null +++ b/src/app/modeler/component/modeler.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-modeler', + templateUrl: './modeler.component.html', + styleUrls: ['./modeler.component.scss'], +}) +export class ModelerComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/modeler/domain-story-modeler-module.module.ts b/src/app/modeler/domain-story-modeler-module.module.ts new file mode 100644 index 00000000..647ae0e3 --- /dev/null +++ b/src/app/modeler/domain-story-modeler-module.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { HeaderButtonsComponent } from '../header/component/header-buttons.component'; + +@NgModule({ + declarations: [HeaderButtonsComponent], + exports: [HeaderButtonsComponent], + imports: [CommonModule], +}) +export class DomainStoryModelerModuleModule {} diff --git a/app/domain-story-modeler/index.js b/src/app/modeler/domain-story-modeler/index.js similarity index 51% rename from app/domain-story-modeler/index.js rename to src/app/modeler/domain-story-modeler/index.js index 552aed1c..8f76bb32 100644 --- a/app/domain-story-modeler/index.js +++ b/src/app/modeler/domain-story-modeler/index.js @@ -1,153 +1,139 @@ -'use strict'; - -import Modeler from 'bpmn-js/lib/Modeler'; -import ResizeModule from 'diagram-js/lib/features/resize'; - - -import { - assign, - isArray -} from 'min-dash'; - -import inherits from 'inherits'; - -import DomainStoryModule from './modeler'; -import LabelEditingModule from './features/labeling'; -import ModelingModule from './features/modeling'; -import { ACTIVITY, CONNECTION, GROUP } from './language/elementTypes'; - - -export default function DomainStoryModeler(options) { - Modeler.call(this, options); - - this._customElements = []; - this._groupElements = []; -} - -inherits(DomainStoryModeler, Modeler); - -DomainStoryModeler.prototype._modules = [].concat( - DomainStoryModeler.prototype._modules, - [ - DomainStoryModule, - LabelEditingModule, - ModelingModule - ], - [ResizeModule] -); - -/** - * add a single custom element to the underlying diagram - * - * @param {Object} customElement - */ -DomainStoryModeler.prototype._addCustomShape = function(customElement) { - let parentId = customElement.parent; - delete customElement.children; - delete customElement.parent; - this._customElements.push(customElement); - - let canvas = this.get('canvas'), - elementFactory = this.get('elementFactory'); - - let customAttrs = assign({ businessObject: customElement }, customElement); - let customShape = elementFactory.create('shape', customAttrs); - - if (isGroup(customElement)) { - this._groupElements[customElement.id] = customShape; - } - - if (parentId) { - let parentShape = this._groupElements[parentId]; - - if (isGroup(parentShape)) { - return canvas.addShape(customShape, parentShape, parentShape.id); - } - } - return canvas.addShape(customShape); -}; - -DomainStoryModeler.prototype._addCustomConnection = function(customElement) { - - this._customElements.push(customElement); - - let canvas = this.get('canvas'), - elementFactory = this.get('elementFactory'), - elementRegistry = this.get('elementRegistry'); - - let customAttrs = assign({ businessObject: customElement }, customElement); - - let connection = elementFactory.create('connection', assign(customAttrs, { - source: elementRegistry.get(customElement.source), - target: elementRegistry.get(customElement.target) - }), - elementRegistry.get(customElement.source).parent); - - return canvas.addConnection(connection); - -}; - -DomainStoryModeler.prototype.importCustomElements = function(elements) { - - - this.get('eventBus').fire('diagram.clear', {}); - this._customElements = []; - this._groupElements = []; - - this.addCustomElements(elements); -}; - - -/** - * add a number of custom elements and connections to the underlying diagram. - * - * @param {Array} customElements - */ -DomainStoryModeler.prototype.addCustomElements = function(customElements) { - - if (!isArray(customElements)) { - throw new Error('argument must be an array'); - } - - let shapes = [], - connections = [], - groups = []; - - customElements.forEach(function(customElement) { - if (isConnection(customElement)) { - connections.push(customElement); - } else if (isGroup(customElement)) { - groups.push(customElement); - } else { - shapes.push(customElement); - } - }); - - // add groups before shapes and shapes before connections so that connections - // can already rely on the shapes being part of the diagram - groups.forEach(this._addCustomShape, this); - shapes.forEach(this._addCustomShape, this); - connections.forEach(this._addCustomConnection, this); -}; - -/** - * get custom elements with their current status. - * - * @return {Array} custom elements on the diagram - */ -DomainStoryModeler.prototype.getCustomElements = function() { - return this._customElements; -}; - -// override standard fucntion to prevent default elements on canvas -DomainStoryModeler.prototype.createDiagram = function(done) { -}; - -function isConnection(element) { - return element.type === ACTIVITY || element.type === CONNECTION; -} - -function isGroup(element) { - return element && element.type === GROUP; -} - +"use strict"; + +import Modeler from "bpmn-js/lib/Modeler"; +import ResizeModule from "diagram-js/lib/features/resize"; +import { assign, isArray } from "min-dash"; +import inherits from "inherits"; + +import DomainStoryModule from "./modeler"; +import LabelEditingModule from "./modeler/labeling"; +import ModelingModule from "./modeler/modeling"; +import { elementTypes } from "../../common/domain/elementTypes"; + +export default function DomainStoryModeler(options) { + Modeler.call(this, options); + + this._customElements = []; + this._groupElements = []; +} + +inherits(DomainStoryModeler, Modeler); + +DomainStoryModeler.prototype._modules = [].concat( + DomainStoryModeler.prototype._modules, + [DomainStoryModule, LabelEditingModule, ModelingModule], + [ResizeModule] +); + +/** + * add a single custom element to the underlying diagram + * + * @param {Object} customElement + */ +DomainStoryModeler.prototype._addCustomShape = function (customElement) { + let parentId = customElement.parent; + delete customElement.children; + delete customElement.parent; + this._customElements.push(customElement); + + let canvas = this.get("canvas"), + elementFactory = this.get("elementFactory"); + + let customAttrs = assign({ businessObject: customElement }, customElement); + let customShape = elementFactory.create("shape", customAttrs); + + if (isGroup(customElement)) { + this._groupElements[customElement.id] = customShape; + } + + if (parentId) { + let parentShape = this._groupElements[parentId]; + + if (isGroup(parentShape)) { + return canvas.addShape(customShape, parentShape, parentShape.id); + } + } + return canvas.addShape(customShape); +}; +DomainStoryModeler.prototype._addCustomConnection = function (customElement) { + this._customElements.push(customElement); + + let canvas = this.get("canvas"), + elementFactory = this.get("elementFactory"), + elementRegistry = this.get("elementRegistry"); + + let customAttrs = assign({ businessObject: customElement }, customElement); + + let connection = elementFactory.create( + "connection", + assign(customAttrs, { + source: elementRegistry.get(customElement.source), + target: elementRegistry.get(customElement.target), + }), + elementRegistry.get(customElement.source).parent + ); + + return canvas.addConnection(connection); +}; + +DomainStoryModeler.prototype.importCustomElements = function (elements) { + this.get("eventBus").fire("diagram.clear", {}); + this._customElements = []; + this._groupElements = []; + + this.addCustomElements(elements); +}; + +/** + * add a number of custom elements and connections to the underlying diagram. + * + * @param {Array} customElements + */ +DomainStoryModeler.prototype.addCustomElements = function (customElements) { + if (!isArray(customElements)) { + throw new Error("argument must be an array"); + } + + let shapes = [], + connections = [], + groups = []; + + customElements.forEach(function (customElement) { + if (isConnection(customElement)) { + connections.push(customElement); + } else if (isGroup(customElement)) { + groups.push(customElement); + } else { + shapes.push(customElement); + } + }); + + // add groups before shapes and shapes before connections so that connections + // can already rely on the shapes being part of the diagram + groups.forEach(this._addCustomShape, this); + shapes.forEach(this._addCustomShape, this); + connections.forEach(this._addCustomConnection, this); +}; + +/** + * get custom elements with their current status. + * + * @return {Array} custom elements on the diagram + */ +DomainStoryModeler.prototype.getCustomElements = function () { + return this._customElements; +}; + +// override standard function to prevent default elements on canvas +DomainStoryModeler.prototype.createDiagram = function (done) {}; + +function isConnection(element) { + return ( + element.type === elementTypes.ACTIVITY || + element.type === elementTypes.CONNECTION + ); +} + +function isGroup(element) { + return element && element.type === elementTypes.GROUP; +} diff --git a/src/app/modeler/domain-story-modeler/modeler/change-icon/index.js b/src/app/modeler/domain-story-modeler/modeler/change-icon/index.js new file mode 100644 index 00000000..00c0d53f --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/change-icon/index.js @@ -0,0 +1,11 @@ +"use strict"; + +import ReplaceMenuProvider from "./replaceMenuProvider"; +import DSModeling from "../modeling/dSModeling"; + +export default { + __depends__: [], + __init__: ["replaceMenuProvider"], + replaceMenuProvider: ["type", ReplaceMenuProvider], + modeling: ["type", DSModeling], +}; diff --git a/src/app/modeler/domain-story-modeler/modeler/change-icon/replace.js b/src/app/modeler/domain-story-modeler/modeler/change-icon/replace.js new file mode 100644 index 00000000..3018558b --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/change-icon/replace.js @@ -0,0 +1,53 @@ +"use strict"; + +import { assign } from "min-dash"; + +/** + * service that allow replacing of elements. + */ +export default function Replace(modeling) { + this._modeling = modeling; +} + +/** + * @param {Element} oldElement - element to be replaced + * @param {Object} newElementData - containing information about the new Element, for example height, width, type. + * @param modeling + */ +function replaceElement(oldElement, newElementData, modeling) { + // let modeling = this._modeling; + + let newElement = setCenterOfElement( + newElementData, + oldElement, + newElement, + modeling + ); + let outgoingActivities = newElement.outgoing; + let incomingActivities = newElement.incoming; + + outgoingActivities.forEach((element) => { + element.businessObject.source = newElement.id; + }); + + incomingActivities.forEach((element) => { + element.businessObject.target = newElement.id; + }); + + return newElement; +} + +function setCenterOfElement(newElementData, oldElement, newElement, modeling) { + newElementData.x = Math.ceil( + oldElement.x + (newElementData.width || oldElement.width) / 2 + ); + newElementData.y = Math.ceil( + oldElement.y + (newElementData.height || oldElement.height) / 2 + ); + + assign(newElementData, { name: oldElement.businessObject.name }); + + return modeling.replaceShape(oldElement, newElementData, {}); +} + +Replace.prototype.replaceElement = replaceElement; diff --git a/app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js b/src/app/modeler/domain-story-modeler/modeler/change-icon/replaceMenuProvider.js similarity index 73% rename from app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js rename to src/app/modeler/domain-story-modeler/modeler/change-icon/replaceMenuProvider.js index 728b2cf3..7f0a4800 100644 --- a/app/domain-story-modeler/features/change-icon/ReplaceMenuProvider.js +++ b/src/app/modeler/domain-story-modeler/modeler/change-icon/replaceMenuProvider.js @@ -1,10 +1,9 @@ -'use strict'; +"use strict"; -import Replace from './Replace'; +import Replace from "./replace"; +import * as replaceOptions from "./replaceOptions"; -import * as replaceOptions from './ReplaceOptions'; - -import { forEach } from 'min-dash'; +import { forEach } from "min-dash"; /** * This module is an element agnostic replace menu provider for the popup menu. @@ -14,7 +13,7 @@ export default function ReplaceMenuProvider(modeling) { this._modeling = modeling; } -ReplaceMenuProvider.$inject = ['modeling']; +ReplaceMenuProvider.$inject = ["modeling"]; /** * Get all entries from replaceOptions for the given element and apply filters @@ -24,13 +23,11 @@ ReplaceMenuProvider.$inject = ['modeling']; * * @return {Array} a list of menu entry items */ -ReplaceMenuProvider.prototype.getEntries = function(element) { - +ReplaceMenuProvider.prototype.getEntries = function (element) { let entries; - if (element.type.includes('actor')) { + if (element.type.includes("actor")) { entries = replaceOptions.actorReplaceOptions(element.type); - } - else if (element.type.includes('workObject')) { + } else if (element.type.includes("workObject")) { entries = replaceOptions.workObjectReplaceOptions(element.type); } @@ -46,12 +43,15 @@ ReplaceMenuProvider.prototype.getEntries = function(element) { * * @return {Array} a list of menu items */ -ReplaceMenuProvider.prototype._createEntries = function(element, replaceOptions) { +ReplaceMenuProvider.prototype._createEntries = function ( + element, + replaceOptions +) { let menuEntries = []; let self = this; - forEach(replaceOptions, function(definition) { + forEach(replaceOptions, function (definition) { let entry = self._createMenuEntry(definition, element); menuEntries.push(entry); @@ -70,21 +70,23 @@ ReplaceMenuProvider.prototype._createEntries = function(element, replaceOptions) * * @return {Object} menu entry item */ -ReplaceMenuProvider.prototype._createMenuEntry = function(definition, element, action) { +ReplaceMenuProvider.prototype._createMenuEntry = function ( + definition, + element, + action +) { let replaceElement = this._dsReplace.replaceElement; let modeling = this._modeling; - let replaceAction = function() { + let replaceAction = function () { return replaceElement(element, definition.target, modeling); }; action = action || replaceAction; - let menuEntry = { + return { label: definition.label, className: definition.className, id: definition.actionName, - action: action + action: action, }; - - return menuEntry; -}; \ No newline at end of file +}; diff --git a/src/app/modeler/domain-story-modeler/modeler/change-icon/replaceOptions.js b/src/app/modeler/domain-story-modeler/modeler/change-icon/replaceOptions.js new file mode 100644 index 00000000..74ae836d --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/change-icon/replaceOptions.js @@ -0,0 +1,60 @@ +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { getNameFromType } from "src/app/common/util/naming"; + +("use strict"); + +let iconDictionaryService; + +export function initializeReplaceOptions(iconDictionary) { + iconDictionaryService = iconDictionary; +} + +export function actorReplaceOptions(name) { + const actorTypes = iconDictionaryService.getTypeDictionary( + elementTypes.ACTOR + ); + + let replaceOption = {}; + let i = 0; + + actorTypes.keysArray().forEach((actorType) => { + if (!name.includes(actorType)) { + const typeName = getNameFromType(actorType); + replaceOption[i] = { + label: "Change to " + typeName, + actionName: "replace-with-actor-" + typeName.toLowerCase(), + className: iconDictionaryService.getIconForType(actorType), + target: { + type: actorType, + }, + }; + i++; + } + }); + return replaceOption; +} + +export function workObjectReplaceOptions(name) { + const workObjectTypes = iconDictionaryService.getTypeDictionary( + elementTypes.WORKOBJECT + ); + + let replaceOption = {}; + let i = 0; + + workObjectTypes.keysArray().forEach((workObjectType) => { + if (!name.includes(workObjectType)) { + const typeName = getNameFromType(workObjectType); + replaceOption[i] = { + label: "Change to " + typeName, + actionName: "replace-with-actor-" + typeName, + className: iconDictionaryService.getIconForType(workObjectType), + target: { + type: workObjectType, + }, + }; + } + i++; + }); + return replaceOption; +} diff --git a/src/app/modeler/domain-story-modeler/modeler/context-pad/domainStoryContextPadProvider.js b/src/app/modeler/domain-story-modeler/modeler/context-pad/domainStoryContextPadProvider.js new file mode 100644 index 00000000..5c6a381f --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/context-pad/domainStoryContextPadProvider.js @@ -0,0 +1,362 @@ +"use strict"; + +import inherits from "inherits"; + +import ContextPadProvider from "bpmn-js/lib/features/context-pad/ContextPadProvider"; + +import { assign, bind } from "min-dash"; +import { generateAutomaticNumber } from "../numbering/numbering"; +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { getAllStandardIconKeys } from "src/app/domain-configuration/domain/allIcons"; +import { getNameFromType } from "src/app/common/util/naming"; + +let dirtyFlagService; +let iconDictionaryService; + +export function initializeContextPadProvider(dirtyFlag, iconDictionary) { + dirtyFlagService = dirtyFlag; + iconDictionaryService = iconDictionary; +} + +export default function DomainStoryContextPadProvider( + injector, + connect, + translate, + elementFactory, + create, + canvas, + contextPad, + popupMenu, + replaceMenuProvider, + commandStack, + eventBus, + modeling +) { + let startConnect; + let selectedElement; + + injector.invoke(ContextPadProvider, this); + let autoPlace = injector.get("autoPlace", false); + + let cached = bind(this.getContextPadEntries, this); + + const colorPicker = document.getElementById("colorPicker"); + colorPicker.onchange = (ev) => { + const context = { + businessObject: selectedElement.businessObject, + newColor: ev.target.value, + element: selectedElement, + }; + + commandStack.execute("element.colorChange", context); + dirtyFlagService.makeDirty(); + }; + + popupMenu.registerProvider("ds-replace", replaceMenuProvider); + popupMenu.registerProvider("bpmn-replace", replaceMenuProvider); + + this.getContextPadEntries = function (element) { + const allStandardIconKeys = getAllStandardIconKeys(); + let actions = cached(element); + + startConnect = function (event, element, autoActivate) { + connect.start(event, element, autoActivate); + }; + + if (element.type.includes(elementTypes.WORKOBJECT)) { + if ( + allStandardIconKeys.includes( + element.type.replace(elementTypes.WORKOBJECT, "") + ) + ) { + addColorChange(actions); + } + addConnectWithActivity(actions, startConnect); + addTextAnnotation(actions); + addActors(appendAction, actions); + addWorkObjects(appendAction, actions); + addChangeWorkObjectTypeMenu(actions); + } else if (element.type.includes(elementTypes.ACTOR)) { + if ( + allStandardIconKeys.includes( + element.type.replace(elementTypes.ACTOR, "") + ) + ) { + addColorChange(actions); + } + addConnectWithActivity(actions, startConnect); + addTextAnnotation(actions); + addWorkObjects(appendAction, actions); + addChangeActorTypeMenu(actions); + } else if (element.type.includes(elementTypes.GROUP)) { + delete actions.delete; + addTextAnnotation(actions); + assign(actions, { + deleteGroup: { + group: "edit", + className: "bpmn-icon-trash", + title: "Remove Group without Child-Elements", + action: { + click: function (event, element) { + modeling.removeGroup(element); + dirtyFlagService.makeDirty(); + }, + }, + }, + }); + addColorChange(actions); + } else if (element.type.includes(elementTypes.ACTIVITY)) { + moveDeleteActionToEndOfArray(actions); + + addColorChange(actions); + + assign(actions, { + delete: { + group: "edit", + className: "bpmn-icon-trash", + title: "Remove", + action: { + click: function (event, element) { + modeling.removeElements({ element }); + dirtyFlagService.makeDirty(); + }, + }, + }, + }); + } + + return actions; + }; + + function moveDeleteActionToEndOfArray(actions) { + delete actions.delete; + + assign(actions, { + changeDirection: { + group: "edit", + className: "icon-domain-story-changeDirection", + title: translate("Change direction"), + action: { + // event needs to be addressed + click: function (event, element) { + changeDirection(element); + }, + }, + }, + }); + } + + function addChangeActorTypeMenu(actions) { + assign(actions, { + replace: { + group: "edit", + className: "bpmn-icon-screw-wrench", + title: translate("Change type"), + action: { + click: function (event, element) { + let position = assign(getReplaceMenuPosition(element), { + cursor: { x: event.x, y: event.y }, + }); + popupMenu.open(element, "ds-replace", position); + }, + }, + }, + }); + } + + function addColorChange(actions) { + assign(actions, { + colorChange: { + group: "edit", + className: "icon-domain-story-color-picker", + title: translate("Change color"), + action: { + click: function (event, element) { + selectedElement = element; + colorPicker.click(); + }, + }, + }, + }); + } + + function addTextAnnotation(actions) { + assign(actions, { + "append.text-annotation": appendAction( + elementTypes.TEXTANNOTATION, + "bpmn-icon-text-annotation", + "textannotation", + "connect" + ), + }); + } + + function addConnectWithActivity(actions, startConnect) { + assign(actions, { + connect: { + group: "connect", + className: "bpmn-icon-connection", + title: translate("Connect with activity"), + action: { + click: startConnect, + dragstart: startConnect, + }, + }, + }); + } + + function addWorkObjects(appendAction, actions) { + let workObjectTypes = iconDictionaryService.getTypeDictionary( + elementTypes.WORKOBJECT + ); + workObjectTypes.keysArray().forEach((workObjectType) => { + let name = getNameFromType(workObjectType); + let icon = iconDictionaryService.getIconForType(workObjectType); + let action = []; + action["append.workObject" + name] = appendAction( + workObjectType, + icon, + name, + "workObjects" + ); + assign(actions, action); + }); + } + + function addActors(appendAction, actions) { + let actorTypes = iconDictionaryService.getTypeDictionary( + elementTypes.ACTOR + ); + actorTypes.keysArray().forEach((actorType) => { + let name = getNameFromType(actorType); + let icon = iconDictionaryService.getIconForType(actorType); + let action = []; + action["append.actor" + name] = appendAction( + actorType, + icon, + name, + "actors" + ); + assign(actions, action); + }); + } + + function addChangeWorkObjectTypeMenu(actions) { + assign(actions, { + replace: { + group: "edit", + className: "bpmn-icon-screw-wrench", + title: translate("Change type"), + action: { + click: function (event, element) { + let position = assign(getReplaceMenuPosition(element), { + cursor: { x: event.x, y: event.y }, + }); + popupMenu.open(element, "ds-replace", position); + }, + }, + }, + }); + } + + function changeDirection(element) { + let context; + let businessObject = element.businessObject; + let newNumber; + + if (element.source.type.includes(elementTypes.ACTOR)) { + newNumber = 0; + } else { + newNumber = generateAutomaticNumber(element, commandStack); + } + context = { + businessObject: businessObject, + newNumber: newNumber, + element: element, + }; + commandStack.execute("activity.directionChange", context); + } + + function getReplaceMenuPosition(element) { + let Y_OFFSET = 5; + + let diagramContainer = canvas.getContainer(), + pad = contextPad.getPad(element).html; + + let diagramRect = diagramContainer.getBoundingClientRect(), + padRect = pad.getBoundingClientRect(); + + let top = padRect.top - diagramRect.top; + let left = padRect.left - diagramRect.left; + + return { + x: left, + y: top + padRect.height + Y_OFFSET, + }; + } + + /** + * create an append action + * + * @param {String} type + * @param {String} className + * @param {String} [title] + * @param {String} group + * @param {Object} [options] + * + * @return {Object} descriptor + */ + function appendAction(type, className, title, group, options) { + if (typeof title !== "string") { + options = title; + title = translate("{type}", { type: type.replace(/^domainStory:/, "") }); + } + + function appendStart(event, element) { + let shape = elementFactory.createShape(assign({ type: type }, options)); + let context = { + elements: [shape], + hints: {}, + source: element, + }; + create.start(event, shape, context); + } + + autoPlace + ? function (element) { + let shape = elementFactory.createShape( + assign({ type: type }, options) + ); + + autoPlace.append(element, shape); + } + : appendStart; + + return { + group: group, + className: className, + title: "Append " + title, + action: { + dragstart: startConnect, + click: appendStart, + }, + }; + } +} + +inherits(DomainStoryContextPadProvider, ContextPadProvider); + +DomainStoryContextPadProvider.$inject = [ + "injector", + "connect", + "translate", + "elementFactory", + "create", + "canvas", + "contextPad", + "popupMenu", + "replaceMenuProvider", + "commandStack", + "eventBus", + "modeling", +]; diff --git a/src/app/modeler/domain-story-modeler/modeler/context-pad/index.js b/src/app/modeler/domain-story-modeler/modeler/context-pad/index.js new file mode 100644 index 00000000..816fbe0d --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/context-pad/index.js @@ -0,0 +1,20 @@ +import ElementFactory from "diagram-js/lib/core/ElementFactory"; +import CommandStack from "diagram-js/lib/command/CommandStack"; +import DSModeling from "../modeling/dSModeling"; + +("use strict"); + +export default { + __depends__: [], + __init__: [ + "domainStoryRenderer", + "paletteProvider", + "domainStoryRules", + "domainStoryUpdater", + "contextPadProvider", + "replaceMenuProvider", + ], + elementFactoryBpmn: ["type", ElementFactory], + commandStack: ["type", CommandStack], + modeling: ["type", DSModeling], +}; diff --git a/app/domain-story-modeler/modeler/DomainStoryElementFactory.js b/src/app/modeler/domain-story-modeler/modeler/domainStoryElementFactory.js similarity index 60% rename from app/domain-story-modeler/modeler/DomainStoryElementFactory.js rename to src/app/modeler/domain-story-modeler/modeler/domainStoryElementFactory.js index ad639ec2..f314d32f 100644 --- a/app/domain-story-modeler/modeler/DomainStoryElementFactory.js +++ b/src/app/modeler/domain-story-modeler/modeler/domainStoryElementFactory.js @@ -1,16 +1,14 @@ -'use strict'; +"use strict"; -import { - assign -} from 'min-dash'; +import { assign } from "min-dash"; -import inherits from 'inherits'; +import inherits from "inherits"; -import BpmnElementFactory from 'bpmn-js/lib/features/modeling/ElementFactory'; +import BpmnElementFactory from "bpmn-js/lib/features/modeling/ElementFactory"; -import { DEFAULT_LABEL_SIZE } from 'bpmn-js/lib/util/LabelUtil'; +import { DEFAULT_LABEL_SIZE } from "bpmn-js/lib/util/LabelUtil"; -import DomainStoryIdFactory from './DomainStoryIdFactory'; +import DomainStoryIdFactory from "./domainStoryIdFactory"; /** * A custom factory that knows how to create BPMN _and_ custom elements. @@ -29,20 +27,22 @@ export default function DomainStoryElementFactory(bpmnFactory, moddle) { * * @return {djs.model.Base} */ - this.create = function(elementType, attrs) { + this.create = function (elementType, attrs) { let type = attrs.type; - if (elementType === 'label') { - return self.baseCreate(elementType, assign({ type: 'label' }, DEFAULT_LABEL_SIZE, attrs)); + if (elementType === "label") { + return self.baseCreate( + elementType, + assign({ type: "label" }, DEFAULT_LABEL_SIZE, attrs) + ); } // add type to businessObject if custom if (/^domainStory:/.test(type)) { - if (!attrs.businessObject) { attrs.businessObject = { type: type, - name: attrs.name ? attrs.name : '' + name: attrs.name ? attrs.name : "", }; } @@ -52,23 +52,23 @@ export default function DomainStoryElementFactory(bpmnFactory, moddle) { attrs.id = domainStoryIdFactory.getId(elementType); } assign(attrs.businessObject, { - id: attrs.id + id: attrs.id, }); let id = attrs.id; - attrs.businessObject.get = function(key) { - if (key == 'id') { + attrs.businessObject.get = function (key) { + if (key === "id") { return id; } }; - attrs.businessObject.set = function(key, value) { - if (key == 'id') { + attrs.businessObject.set = function (key, value) { + if (key === "id") { assign(attrs.businessObject, { id: value }); } }; if (!attrs.businessObject.$type) { - assign(attrs.businessObject, { $type: 'Element' }); + assign(attrs.businessObject, { $type: "Element" }); } assign(attrs.businessObject, { di: {} }); if (!attrs.businessObject.$descriptor) { @@ -76,17 +76,19 @@ export default function DomainStoryElementFactory(bpmnFactory, moddle) { } // add width and height if shape - if ((!/:activity$/.test(type) || !/:connection$/.test(type)) && !(/:group$/.test(type) && attrs.height || attrs.width)) { + if ( + (!/:activity$/.test(type) || !/:connection$/.test(type)) && + !((/:group$/.test(type) && attrs.height) || attrs.width) + ) { assign(attrs, self._getCustomElementSize(type)); } - if (!('$instanceOf' in attrs.businessObject)) { - + if (!("$instanceOf" in attrs.businessObject)) { // ensure we can use ModelUtil#is for type checks - Object.defineProperty(attrs.businessObject, '$instanceOf', { - value: function(type) { + Object.defineProperty(attrs.businessObject, "$instanceOf", { + value: function (type) { return this.type === type; - } + }, }); } @@ -99,28 +101,29 @@ export default function DomainStoryElementFactory(bpmnFactory, moddle) { inherits(DomainStoryElementFactory, BpmnElementFactory); -DomainStoryElementFactory.$inject = [ - 'bpmnFactory', - 'moddle' -]; - +DomainStoryElementFactory.$inject = ["bpmnFactory", "moddle"]; /** * returns the default size of custom shapes. * * the following example shows an interface on how - * to setup the custom shapes's dimensions. + * to setup the custom shape's dimensions. * * * @param {String} type * * @return {Dimensions} a {width, height} object representing the size of the element */ -DomainStoryElementFactory.prototype._getCustomElementSize = function(type) { +DomainStoryElementFactory.prototype._getCustomElementSize = function (type) { let shapes = { __default: { width: 75, height: 75 }, - 'domainStory:textAnnotation': { width: 100, height: 30 }, - 'domainStory:group': { width: 525, height: 275 } + "domainStory:textAnnotation": { width: 100, height: 30 }, + "domainStory:group": { width: 525, height: 275 }, }; return shapes[type] || shapes.__default; }; + +class Dimensions { + width; + height; +} diff --git a/src/app/modeler/domain-story-modeler/modeler/domainStoryIdFactory.js b/src/app/modeler/domain-story-modeler/modeler/domainStoryIdFactory.js new file mode 100644 index 00000000..17060538 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/domainStoryIdFactory.js @@ -0,0 +1,58 @@ +"use strict"; + +let idList = []; + +export default function DomainStoryIdFactory() {} + +DomainStoryIdFactory.prototype.getId = function (type) { + return generateId(type); +}; + +DomainStoryIdFactory.prototype.registerId = function (id) { + idList.push(id); +}; + +function generateId(type) { + let idNumber = fourDigitsId(); + + let id = type + "_" + idSuffix(idNumber); + + while (containsId(id)) { + idNumber++; + + id = type + "_" + idSuffix(idNumber); + } + + idList.push(id); + return id; +} + +function idSuffix(idNumber) { + let id; + if (idNumber > 9999) { + id = 0; + } else if (idNumber < 10) { + id = "000" + idNumber; + } else if (idNumber < 100) { + id = "00" + idNumber; + } else if (idNumber < 1000) { + id = "0" + idNumber; + } else { + id = "" + idNumber; + } + return id; +} + +function fourDigitsId() { + return Math.floor(Math.random() * 10000); +} + +export function containsId(id) { + let same = false; + idList.forEach((element) => { + if (id === element) { + same = true; + } + }); + return same; +} diff --git a/src/app/modeler/domain-story-modeler/modeler/domainStoryRenderer.js b/src/app/modeler/domain-story-modeler/modeler/domainStoryRenderer.js new file mode 100644 index 00000000..9f49daf3 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/domainStoryRenderer.js @@ -0,0 +1,821 @@ +"use strict"; + +import inherits from "inherits"; + +import BaseRenderer from "diagram-js/lib/draw/BaseRenderer"; + +import Ids from "ids"; + +import { getAnnotationBoxHeight } from "./labeling/dsLabelEditingPreview"; + +import { componentsToPath, createLine } from "diagram-js/lib/util/RenderUtil"; + +import { + append as svgAppend, + attr as svgAttr, + classes as svgClasses, + create as svgCreate, +} from "tiny-svg"; + +import { query as domQuery } from "min-dom"; + +import { assign, isObject } from "min-dash"; + +import { getNumberStash } from "./labeling/dsLabelEditingProvider"; + +import { + addNumberToRegistry, + generateAutomaticNumber, + numberBoxDefinitions, +} from "./numbering/numbering"; + +import { calculateTextWidth } from "./labeling/dsLabelUtil"; +import { countLines, labelPosition } from "./labeling/position"; +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { angleBetween } from "../../../common/util/mathExtensions"; + +let RENDERER_IDS = new Ids(); +let numbers = []; +const DEFAULT_COLOR = "black"; + +/** + * a renderer that knows how to render custom elements. + */ +let iconDictionary; +let elementRegistry; +let dirtyFlag; + +export function initializeRenderer( + iconDictionaryService, + elementRegistryService, + dirtyFlagService +) { + iconDictionary = iconDictionaryService; + elementRegistry = elementRegistryService; + dirtyFlag = dirtyFlagService; +} + +export default function DomainStoryRenderer( + eventBus, + styles, + canvas, + textRenderer, + pathMap, + commandStack +) { + BaseRenderer.call(this, eventBus, 2000); + + let rendererId = RENDERER_IDS.next(); + let markers = {}; + let computeStyle = styles.computeStyle; + + // generate the automatic Number for an activity originating from an actor + function generateActivityNumber(parentGfx, element, box) { + // whenever we want to edit an activity, it gets redrawn as a new object + // and the custom information is lost, + // so we stash it before the editing occurs and set the value here + + let numberStash = getNumberStash(); + let semantic = element.businessObject; + + if (numberStash.use) { + semantic.number = numberStash.number; + } + + box.x -= 15; + renderNumber(parentGfx, ".", backgroundStyle(box), element.type); + + numbers[semantic.number] = true; + box.x += 39; + box.y -= 5; + + let newRenderedNumber = renderNumber( + parentGfx, + semantic.number, + numberStyle(box), + element.type + ); + addNumberToRegistry(newRenderedNumber, semantic.number); + } + + // style functions + function numberStyle(box) { + return { + box: box, + fitBox: true, + style: assign({}, textRenderer.getExternalStyle(), { + fill: "white", + backgroundColor: "green", + position: "absolute", + }), + }; + } + + function backgroundStyle(box) { + return { + box: box, + fitBox: true, + style: assign({}, textRenderer.getExternalStyle(), { + fill: "#42aebb", + fontSize: 150, + position: "absolute", + fontFamily: "Courier", + }), + }; + } + + // render functions + // render label associated with actors and workobjects + function renderEmbeddedLabel(parentGfx, element, align, padding) { + let semantic = element.businessObject; + return renderLabel( + parentGfx, + semantic.name, + { + box: element, + align: align, + padding: padding ? padding : 0, + style: { + fill: "#000000", + }, + }, + element.type + ); + } + + // render label associated with activities + function renderExternalLabel(parentGfx, element) { + let semantic = element.businessObject; + let waypoints = element.waypoints; + let lines = countLines(semantic.name); + + if (element.waypoints != null) { + let position = labelPosition(waypoints, lines); + let startPoint = element.waypoints[position.selected]; + let endPoint = element.waypoints[position.selected + 1]; + let angle = angleBetween(startPoint, endPoint); + let alignment = "left"; + let boxWidth = 500; + let xStart = position.x; + + // if the activity is horizontal, we want to center the label + if (angle === 0 || angle === 180) { + boxWidth = Math.abs(startPoint.x - endPoint.x); + alignment = "center"; + xStart = + (startPoint.x + endPoint.x) / 2 - calculateTextWidth(semantic.name); + } + + let box = { + textAlign: alignment, + width: boxWidth, + height: 30, + x: xStart, + y: position.y, + }; + + if (semantic.name && semantic.name.length) { + return renderLabel( + parentGfx, + semantic.name, + { + box: box, + fitBox: true, + style: assign({}, textRenderer.getExternalStyle(), { + fill: "black", + wordWrap: "break-word", + overflowWrap: "break-word", + hyphens: "auto", + }), + }, + element.type + ); + } + } + } + + // render the number associated with an activity + function renderExternalNumber(parentGfx, element) { + if (element && element.source) { + let semantic = element.businessObject; + + let box = numberBoxDefinitions(element); + + if ( + semantic.number == null && + element.source.type && + element.source.type.includes(elementTypes.ACTOR) + ) { + generateAutomaticNumber(element, commandStack); + } + + // render the background for the number + if (semantic.number && element.source.type.includes(elementTypes.ACTOR)) { + generateActivityNumber(parentGfx, element, box); + } else { + semantic.number = null; + } + } + } + + // render a number on the canvas + function renderNumber(parentGfx, number, options, type) { + if (number < 10) { + number = "0" + String(number); + } + number = String(number); + let text = textRenderer.createText(number || "", options); + let height = 0; + + svgClasses(text).add("djs-labelNumber"); + + setCoordinates(type, text, options, height, parentGfx); + + svgAppend(parentGfx, text); + return text; + } + + // the coordinates of the activity label must be set directly and will not be taken from the box + function setCoordinates(type, text, options, height, parentGfx) { + if (/:activity$/.test(type)) { + text.innerHTML = manipulateInnerHTMLXLabel( + text.children, + options.box.x, + 0 + ); + text.innerHTML = manipulateInnerHTMLYLabel( + text.children, + options.box.y, + 0 + ); + } else if (/:actor/.test(type)) { + height = parentGfx.firstChild.attributes.height.nodeValue; + text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 0); + } else if (/:workObject/.test(type)) { + height = parentGfx.firstChild.attributes.height.nodeValue; + text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 26); + } + } + + // render a label on the canvas + function renderLabel(parentGfx, label, options, type) { + let text = textRenderer.createText(label || "", options); + let height = 0; + + svgClasses(text).add("djs-label"); + setCoordinates(type, text, options, height, parentGfx); + + svgAppend(parentGfx, text); + return text; + } + + // determine the Y-coordinate of the label / number to be rendered + function manipulateInnerHTMLYLabel(children, y, offset) { + if (children) { + let result = ""; + for (let i = 0; i < children.length; i++) { + result += children[i].outerHTML.replace( + /y="-?\d*.\d*"/, + 'y="' + (Number(y) + offset + 14 * i) + '"' + ); + } + + return result; + } + } + + // determine the X-coordinate of the label / number to be rendered + function manipulateInnerHTMLXLabel(children, x, offset) { + if (children) { + let result = ""; + for (let i = 0; i < children.length; i++) { + result += children[i].outerHTML.replace( + /x="-?\d*.\d*"/, + 'x="' + (Number(x) + offset + 14) + '"' + ); + } + + return result; + } + } + + // draw functions + this.drawGroup = function (parentGfx, element) { + if (!element.businessObject.pickedColor) { + element.businessObject.pickedColor = DEFAULT_COLOR; + } + let rect = drawRect( + parentGfx, + element.width, + element.height, + 0, + assign( + { + fill: "none", + stroke: element.businessObject.pickedColor, + }, + element.attrs + ) + ); + + renderEmbeddedLabel(parentGfx, element, "left-top", 8); + + return rect; + }; + + this.drawActor = function (p, element) { + let svgDynamicSizeAttributes = { + width: element.width, + height: element.height, + }, + actor; + let iconSRC = iconDictionary.getTypeIconSRC( + elementTypes.ACTOR, + element.type + ); + + if (iconSRC.startsWith("data")) { + iconSRC = + '' + + ''; + } else { + if (!element.businessObject.pickedColor) { + element.businessObject.pickedColor = DEFAULT_COLOR; + } + const match = iconSRC.match(/fill=".*?"/); + if (match && match.length > 1) { + iconSRC = iconSRC.replace( + /fill=".*?"/, + 'fill="' + element.businessObject.pickedColor + '"' + ); + } else { + const index = iconSRC.indexOf("' + + ''; + } else { + if (!element.businessObject.pickedColor) { + element.businessObject.pickedColor = DEFAULT_COLOR; + } + if (iconSRC.match(/fill=".*?"/).length > 1) { + iconSRC = iconSRC.replace( + /fill=".*?"/, + 'fill="' + element.businessObject.pickedColor + '"' + ); + } else { + const index = iconSRC.indexOf(" source.y + 60) { + if (point.x > source.x + 3 && point.x < source.x + 72) { + let lineOffset = getLineOffset(source); + if (source.y + 75 + lineOffset > point.y) { + point.y += lineOffset; + } + } + } + } + + function adjustForTextOverlap(element) { + let source = element.source; + let target = element.target; + + let waypoints = element.waypoints; + let startPoint = waypoints[0]; + let endPoint = waypoints[waypoints.length - 1]; + + if (startPoint && endPoint && source && target) { + checkIfPointOverlapsText(startPoint, source); + checkIfPointOverlapsText(endPoint, source); + } + } + + function getLineOffset(element) { + let id = element.id; + let offset = 0; + + let objects = document.getElementsByClassName("djs-element djs-shape"); + for (let i = 0; i < objects.length; i++) { + let data_id = objects.item(i).getAttribute("data-element-id"); + if (data_id === id) { + let object = objects.item(i); + let text = object.getElementsByTagName("text")[0]; + let tspans = text.getElementsByTagName("tspan"); + let tspan = tspans[tspans.length - 1]; + offset = tspan.getAttribute("y"); + } + } + return offset - 70; + } + + function fixConnectionInHTML(wantedConnection) { + if (wantedConnection) { + let polylines = wantedConnection.getElementsByTagName("polyline"); + if (polylines.length > 1) { + polylines[1].setAttribute( + "points", + polylines[0].getAttribute("points") + ); + } + } + } + + this.drawDSConnection = function (p, element) { + let attrs = ""; + attrs = computeStyle(attrs, { + stroke: "#000000", + strokeWidth: 1.5, + strokeLinejoin: "round", + strokeDasharray: "5, 5", + }); + + return svgAppend(p, createLine(element.waypoints, attrs)); + }; + + this.drawAnnotation = function (parentGfx, element) { + let style = { + fill: "none", + stroke: "none", + }; + + let text = element.businessObject.text || ""; + if (element.businessObject.text) { + let height = getAnnotationBoxHeight(); + + if (height === 0 && element.businessObject.number) { + height = element.businessObject.number; + } + assign(element, { + height: height, + }); + + // for some reason the keyword height is not exported, so we use another, which we know will be exported, + // to ensure persistent annotation heights between sessions + assign(element.businessObject, { + number: height, + }); + } + + let textElement = drawRect( + parentGfx, + element.width, + element.height, + 0, + 0, + style + ); + let textPathData = pathMap.getScaledPath("TEXT_ANNOTATION", { + xScaleFactor: 1, + yScaleFactor: 1, + containerWidth: element.width, + containerHeight: element.height, + position: { + mx: 0.0, + my: 0.0, + }, + }); + + drawPath(parentGfx, textPathData, { + stroke: "black", + }); + + renderLabel(parentGfx, text, { + box: element, + align: "left-top", + padding: 5, + style: { + fill: "black", + }, + }); + + return textElement; + }; + + // draw helper functions + function drawPath(parentGfx, d, attrs) { + attrs = computeStyle(attrs, ["no-fill"], { + strokeWidth: 2, + stroke: "black", + }); + + let path = svgCreate("path"); + svgAttr(path, { d: d }); + svgAttr(path, attrs); + + svgAppend(parentGfx, path); + + return path; + } + + function drawRect(parentGfx, width, height, r, offset, attrs) { + if (isObject(offset)) { + attrs = offset; + offset = 0; + } + + offset = offset || 0; + attrs = computeStyle(attrs, { + stroke: "black", + strokeWidth: 2, + fill: "white", + }); + + let rect = svgCreate("rect"); + svgAttr(rect, { + x: offset, + y: offset, + width: width - offset * 2, + height: height - offset * 2, + rx: r, + ry: r, + }); + + svgAttr(rect, attrs); + svgAppend(parentGfx, rect); + + return rect; + } + + // marker functions + function marker(type, fill, stroke) { + let id = type + "-" + fill + "-" + stroke + "-" + rendererId; + + if (!markers[id]) { + createMarker(type, fill, stroke); + } + return "url(#" + id + ")"; + } + + function createMarker(type, fill, stroke) { + let id = type + "-" + fill + "-" + stroke + "-" + rendererId; + + if (type === "activity") { + let sequenceflowEnd = svgCreate("path"); + svgAttr(sequenceflowEnd, { d: "M 1 5 L 11 10 L 1 15 Z" }); + + addMarker(id, { + element: sequenceflowEnd, + ref: { x: 11, y: 10 }, + scale: 0.5, + attrs: { + fill: stroke, + stroke: stroke, + }, + }); + } + } + + function addMarker(id, options) { + let attrs = assign( + { + fill: "black", + strokeWidth: 1, + strokeLinecap: "round", + strokeDasharray: "none", + }, + options.attrs + ); + + let ref = options.ref || { x: 0, y: 0 }; + let scale = options.scale || 1; + + // resetting stroke dash array + if (attrs.strokeDasharray === "none") { + attrs.strokeDasharray = [10000, 1]; + } + + let marker = svgCreate("marker"); + + svgAttr(options.element, attrs); + svgAppend(marker, options.element); + svgAttr(marker, { + id: id, + viewBox: "0 0 20 20", + refX: ref.x, + refY: ref.y, + markerWidth: 20 * scale, + markerHeight: 20 * scale, + orient: "auto", + }); + + let defs = domQuery("defs", canvas._svg); + if (!defs) { + defs = svgCreate("defs"); + svgAppend(canvas._svg, defs); + } + svgAppend(defs, marker); + markers[id] = marker; + } + + // path functions + this.getWorkObjectPath = function (shape) { + let rectangle = getRectPath(shape); + return componentsToPath(rectangle); + }; + + this.getGroupPath = function (shape) { + let rectangle = getRectPath(shape); + return componentsToPath(rectangle); + }; + + this.getActivityPath = function (connection) { + let waypoints = connection.waypoints.map(function (p) { + return p.original || p; + }); + + let activityPath = [["M", waypoints[0].x, waypoints[0].y]]; + + waypoints.forEach(function (waypoint, index) { + if (index !== 0) { + activityPath.push(["L", waypoint.x, waypoint.y]); + } + }); + return componentsToPath(activityPath); + }; + + this.getActorPath = function (shape) { + let rectangle = getRectPath(shape); + return componentsToPath(rectangle); + }; +} + +inherits(DomainStoryRenderer, BaseRenderer); + +DomainStoryRenderer.$inject = [ + "eventBus", + "styles", + "canvas", + "textRenderer", + "pathMap", + "commandStack", +]; + +DomainStoryRenderer.prototype.canRender = function (element) { + return /^domainStory:/.test(element.type); +}; + +DomainStoryRenderer.prototype.drawShape = function (p, element) { + // polyfill for tests + if (!String.prototype.startsWith) { + Object.defineProperty(String.prototype, "startsWith", { + value: function (search, pos) { + pos = !pos || pos < 0 ? 0 : +pos; + return this.substring(pos, pos + search.length) === search; + }, + }); + } + + let type = element.type; + element.businessObject.type = type; + + elementRegistry.correctInitialize(); + dirtyFlag.makeDirty(); + + if (type.includes(elementTypes.ACTOR)) { + return this.drawActor(p, element); + } else if (type.includes(elementTypes.WORKOBJECT)) { + return this.drawWorkObject(p, element); + } else if (type.includes(elementTypes.TEXTANNOTATION)) { + return this.drawAnnotation(p, element); + } else if (type.includes(elementTypes.GROUP)) { + return this.drawGroup(p, element); + } +}; + +DomainStoryRenderer.prototype.getShapePath = function (shape) { + let type = shape.type; + + if (type.includes(elementTypes.ACTOR)) { + return this.getActorPath(shape); + } else if (type.includes(elementTypes.WORKOBJECT)) { + return this.getWorkObjectPath(shape); + } else if (type.includes(elementTypes.GROUP)) { + return this.getGroupPath(shape); + } +}; + +DomainStoryRenderer.prototype.drawConnection = function (p, element) { + let type = element.type; + + dirtyFlag.makeDirty(); + + // fixes activities that were copy-pasted + if (!element.businessObject.type) { + element.businessObject.type = type; + } + if (type === elementTypes.ACTIVITY) { + return this.drawActivity(p, element); + } else if (type === elementTypes.CONNECTION) { + return this.drawDSConnection(p, element); + } +}; + +DomainStoryRenderer.prototype.getConnectionPath = function (connection) { + let type = connection.type; + + if (type === elementTypes.ACTIVITY || type === elementTypes.CONNECTION) { + return this.getActivityPath(connection); + } +}; + +// creates a SVG path that describes a rectangle which encloses the given shape. +function getRectPath(shape) { + let offset = 5; + let x = shape.x, + y = shape.y, + width = shape.width / 2 + offset, + height = shape.height / 2 + offset; + + return [ + ["M", x, y], + ["l", width, 0], + ["l", width, height], + ["l", -width, height], + ["l", -width, 0], + ["z"], + ]; +} diff --git a/app/domain-story-modeler/language/DomainStoryRules.js b/src/app/modeler/domain-story-modeler/modeler/domainStoryRules.js similarity index 69% rename from app/domain-story-modeler/language/DomainStoryRules.js rename to src/app/modeler/domain-story-modeler/modeler/domainStoryRules.js index 2c704e3d..3a25c6df 100644 --- a/app/domain-story-modeler/language/DomainStoryRules.js +++ b/src/app/modeler/domain-story-modeler/modeler/domainStoryRules.js @@ -1,17 +1,12 @@ -'use strict'; +"use strict"; -import { - reduce, - assign, - every -} from 'min-dash'; +import { assign, every, reduce } from "min-dash"; -import inherits from 'inherits'; +import inherits from "inherits"; -import { is } from 'bpmn-js/lib/util/ModelUtil'; - -import RuleProvider from 'diagram-js/lib/features/rules/RuleProvider'; -import { ACTIVITY, CONNECTION, GROUP } from './elementTypes'; +import RuleProvider from "diagram-js/lib/features/rules/RuleProvider"; +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { is } from "./util"; const HIGH_PRIORITY = 1500; const MIN_SIZE = 125; @@ -48,9 +43,12 @@ function isAnnotation(element) { * can source and target be connected? */ function canConnect(source, target) { - // only judge about two custom elements - if (isDomainStoryGroup(target) || !isDomainStory(source) || !isDomainStory(target)) { + if ( + isDomainStoryGroup(target) || + !isDomainStory(source) || + !isDomainStory(target) + ) { return; } @@ -77,22 +75,20 @@ function canConnect(source, target) { // do not allow a connection to a connection(the special type of connection between an element and a comment box) // when the target is an annotation, the connection type is an annotation connection instead of an activity if (isAnnotation(target)) { - return { type: CONNECTION }; + return { type: elementTypes.CONNECTION }; } - return { type: ACTIVITY }; + return { type: elementTypes.ACTIVITY }; } function canResize(shape, newBounds) { - if (is(shape, GROUP)) { + if (is(shape, elementTypes.GROUP)) { if (newBounds) { - let lowerLeft = { x: shape.x, y: shape.y + shape.height }; let lowerRight = { x: shape.x + shape.width, y: shape.y + shape.height }; let upperRight = { x: shape.x + shape.width, y: shape.y }; - if (newBounds.x != shape.x && newBounds.y != shape.y) { - + if (newBounds.x !== shape.x && newBounds.y !== shape.y) { // upper left if (newBounds.x > lowerRight.x - MIN_SIZE) { assign(newBounds, { x: lowerRight.x - MIN_SIZE }); @@ -102,16 +98,14 @@ function canResize(shape, newBounds) { } } - if (newBounds.x != shape.x && newBounds.y === shape.y) { - + if (newBounds.x !== shape.x && newBounds.y === shape.y) { // lower left if (newBounds.x > upperRight.x - MIN_SIZE) { assign(newBounds, { x: upperRight.x - MIN_SIZE }); } } - if (newBounds.x === shape.x && newBounds.y != shape.y) { - + if (newBounds.x === shape.x && newBounds.y !== shape.y) { // upper right if (newBounds.y > lowerLeft.y - MIN_SIZE) { assign(newBounds, { y: lowerLeft.y - MIN_SIZE }); @@ -136,7 +130,6 @@ function canResize(shape, newBounds) { } function canAttach(elements, target, source) { - if (!Array.isArray(elements)) { elements = [elements]; } @@ -156,32 +149,35 @@ function canAttach(elements, target, source) { return true; } - // only allow drop on DomanStory Elements + // only allow drop on DomainStory Elements if (!isDomainStory(target)) { return false; } - return 'attach'; + return "attach"; } function canConnectToAnnotation(source, target, connection) { - // do not allow an activity connect to an annotation if (isActivity(connection) && isAnnotation(target)) { return false; } // do not allow an annotation connection between two annotations - if (isConnection(connection) && (isAnnotation(source) && isAnnotation(target))) { + if ( + isConnection(connection) && + isAnnotation(source) && + isAnnotation(target) + ) { return false; } // do not allow an annotation connection between an actor or workObject and anything except an annotation - if (isConnection(connection) && !isAnnotation(target) && (isActor(source) || isWorkObject(source))) { - return false; - } - - return true; + return !( + isConnection(connection) && + !isAnnotation(target) && + (isActor(source) || isWorkObject(source)) + ); } /** @@ -193,31 +189,28 @@ export default function DomainStoryRules(eventBus) { inherits(DomainStoryRules, RuleProvider); -DomainStoryRules.$inject = ['eventBus']; - - -DomainStoryRules.prototype.init = function() { +DomainStoryRules.$inject = ["eventBus"]; +DomainStoryRules.prototype.init = function () { /** * can shape be created on target container? */ function canCreate(shape, target) { - // only judge about custom elements if (!isDomainStory(shape)) { return; } // allow creation just on groups - return !isDomainStory(target) || (isDomainStoryGroup(target)); + return !isDomainStory(target) || isDomainStoryGroup(target); } - this.addRule('elements.create',function(context) { - var elements = context.elements, - position = context.position, - target = context.target; + this.addRule("elements.create", function (context) { + const elements = context.elements, + position = context.position, + target = context.target; - return every(elements, function(element) { + return every(elements, function (element) { if (isConnection(element)) { return canConnect(element.source, element.target, element); } @@ -226,54 +219,56 @@ DomainStoryRules.prototype.init = function() { return canAttach(element, element.host, null, position); } - return (canCreate(element, target, null, position)); + return canCreate(element, target, null, position); }); }); - this.addRule('elements.move', HIGH_PRIORITY, function(context) { - + this.addRule("elements.move", HIGH_PRIORITY, function (context) { let target = context.target, - shapes = context.shapes; + shapes = context.shapes; let type; // do not allow mixed movements of custom / BPMN shapes // if any shape cannot be moved, the group cannot be moved, too - let allowed = reduce(shapes, function(result, s) { - if (type === undefined) { - type = isDomainStory(s); - } - - if (type !== isDomainStory(s) || result === false) { - return false; - } - - return canCreate(s, target); - }, undefined); // reject, if we have at least one // custom element that cannot be moved - return allowed; + return reduce( + shapes, + function (result, s) { + if (type === undefined) { + type = isDomainStory(s); + } + + if (type !== isDomainStory(s) || result === false) { + return false; + } + + return canCreate(s, target); + }, + undefined + ); }); - this.addRule('shape.create', HIGH_PRIORITY, function(context) { + this.addRule("shape.create", HIGH_PRIORITY, function (context) { let target = context.target, - shape = context.shape; + shape = context.shape; return canCreate(shape, target); }); - this.addRule('connection.create', HIGH_PRIORITY, function(context) { + this.addRule("connection.create", HIGH_PRIORITY, function (context) { let source = context.source, - target = context.target; + target = context.target; return canConnect(source, target); }); - this.addRule('connection.reconnect', HIGH_PRIORITY, function(context) { + this.addRule("connection.reconnect", HIGH_PRIORITY, function (context) { let connection = context.connection, - source = context.hover || context.source, - target = context.target; + source = context.hover || context.source, + target = context.target; // -------------------------------------------------------------- let result = canConnectToAnnotation(source, target, connection); @@ -287,17 +282,15 @@ DomainStoryRules.prototype.init = function() { return canConnect(source, target, connection); }); - this.addRule('shape.resize', function(context) { - + this.addRule("shape.resize", function (context) { let shape = context.shape, - newBounds = context.newBounds; + newBounds = context.newBounds; return canResize(shape, newBounds); }); - }; DomainStoryRules.prototype.canConnect = canConnect; DomainStoryRules.prototype.canAttach = canAttach; DomainStoryRules.prototype.isDomainStory = isDomainStory; -DomainStoryRules.prototype.canResize = canResize; \ No newline at end of file +DomainStoryRules.prototype.canResize = canResize; diff --git a/src/app/modeler/domain-story-modeler/modeler/domainStoryUpdater.js b/src/app/modeler/domain-story-modeler/modeler/domainStoryUpdater.js new file mode 100644 index 00000000..d483fd8a --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/domainStoryUpdater.js @@ -0,0 +1,197 @@ +"use strict"; + +import inherits from "inherits"; + +import { pick, assign } from "min-dash"; + +import CommandInterceptor from "diagram-js/lib/command/CommandInterceptor"; + +import { + add as collectionAdd, + remove as collectionRemove, +} from "diagram-js/lib/util/Collections"; + +import { reworkGroupElements } from "./util"; +import { elementTypes } from "../../../common/domain/elementTypes"; + +/** + * a handler responsible for updating the custom element's businessObject + * once changes on the diagram happen. + */ +export default function DomainStoryUpdater(eventBus, bpmnjs) { + CommandInterceptor.call(this, eventBus); + + function updateCustomElement(e) { + let context = e.context, + shape = context.shape, + businessObject = shape.businessObject; + + if (!shape || !shape.type.includes(elementTypes.DOMAINSTORY)) { + return; + } + + let parent = shape.parent; + let customElements = bpmnjs._customElements; + + // make sure element is added / removed from bpmnjs.customElements + if (!parent) { + collectionRemove(customElements, businessObject); + } else { + collectionAdd(customElements, businessObject); + } + + // save custom element position + assign(businessObject, pick(shape, ["x", "y"])); + + // save custom element size if resizable + if (shape.type === elementTypes.GROUP) { + assign(businessObject, pick(shape, ["height", "width"])); + + // rework the child-parent relations if a group was moved, such that all Objects that are visually in the group are also associated with it + // since we do not have access to the standard-canvas object here, we cannot use the function correctGroupChildren() from DSLabelUtil + if (parent != null) { + reworkGroupElements(parent, shape); + } + } + + if ( + shape && + "type" in shape.parent && + shape.parent.type === elementTypes.GROUP + ) { + assign(businessObject, { + parent: shape.parent.id, + }); + } + } + + function updateCustomConnection(e) { + let context = e.context, + connection = context.connection, + source = connection.source, + target = connection.target, + businessObject = connection.businessObject; + + if (e.newTarget) { + target = e.newTarget; + } + if (e.newSource) { + source = e.newSource; + } + + let parent = connection.parent; + let customElements = bpmnjs._customElements; + + // make sure element is added / removed from bpmnjs.customElements + if (!parent) { + collectionRemove(customElements, businessObject); + } else { + collectionAdd(customElements, businessObject); + } + + // update waypoints + assign(businessObject, { + waypoints: copyWaypoints(connection), + }); + + if (source) { + if (!businessObject.source) { + assign(businessObject, { source: source.id }); + } else { + businessObject.source = source.id; + } + } + if (target) { + if (!businessObject.target) { + assign(businessObject, { target: target.id }); + } else { + businessObject.target = target.id; + } + } + } + + function copyWaypoints(connection) { + return connection.waypoints.map(function (p) { + if (p.original) { + return { + original: { + x: p.original.x, + y: p.original.y, + }, + x: p.x, + y: p.y, + }; + } else { + return { + x: p.x, + y: p.y, + }; + } + }); + } + + this.executed( + [ + "shape.create", + "shape.move", + "shape.delete", + "shape.resize", + "shape.removeGroupWithChildren", + ], + ifDomainStoryElement(updateCustomElement) + ); + + this.reverted( + [ + "shape.create", + "shape.move", + "shape.delete", + "shape.resize", + "shape.removeGroupWithChildren", + ], + ifDomainStoryElement(updateCustomElement) + ); + + this.executed( + [ + "connection.create", + "connection.reconnect", + "connection.updateWaypoints", + "connection.delete", + "connection.layout", + "connection.move", + ], + ifDomainStoryElement(updateCustomConnection) + ); + + this.reverted( + [ + "connection.create", + "connection.reconnect", + "connection.updateWaypoints", + "connection.delete", + "connection.layout", + "connection.move", + ], + ifDomainStoryElement(updateCustomConnection) + ); +} +// check if element in the context of an event is a domainStory element +function ifDomainStoryElement(fn) { + return (event) => { + const context = event.context; + const element = context.shape || context.connection; + + if (isDomainStory(element)) { + fn(event); + } + }; +} + +function isDomainStory(element) { + return element && /domainStory:/.test(element.type); +} + +inherits(DomainStoryUpdater, CommandInterceptor); + +DomainStoryUpdater.$inject = ["eventBus", "bpmnjs"]; diff --git a/src/app/modeler/domain-story-modeler/modeler/index.js b/src/app/modeler/domain-story-modeler/modeler/index.js new file mode 100644 index 00000000..b712b39b --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/index.js @@ -0,0 +1,46 @@ +"use strict"; + +import DomainStoryElementFactory from "./domainStoryElementFactory"; +import DomainStoryRenderer from "./domainStoryRenderer"; +import DomainStoryPalette from "./palette/domainStoryPalette"; +import DomainStoryRules from "./domainStoryRules"; +import DomainStoryUpdater from "./domainStoryUpdater"; +import ElementFactory from "bpmn-js/lib/features/modeling/ElementFactory"; +import CreateModule from "diagram-js/lib/features/create"; +import PathMap from "bpmn-js/lib/draw/PathMap"; +import PopupMenuModule from "bpmn-js/lib/features/popup-menu"; +import ContextPadModule from "diagram-js/lib/features/context-pad"; +import CommandStack from "diagram-js/lib/command/CommandStack"; +import DSUpdateLabelHandler from "./labeling/dsUpdateLabelHandler"; +import headlineAndDescriptionUpdateHandler from "./updateHandler/headlineAndDescriptionUpdateHandler"; +import DomainStoryContextPadProvider from "./context-pad/domainStoryContextPadProvider"; +import ReplaceMenuProvider from "./change-icon/replaceMenuProvider"; +import DSModeling from "./modeling/dSModeling"; + +export default { + __depends__: [CreateModule, ContextPadModule, PopupMenuModule], + __init__: [ + "domainStoryRenderer", + "paletteProvider", + "domainStoryRules", + "domainStoryUpdater", + "contextPadProvider", + "replaceMenuProvider", + ], + elementFactory: ["type", DomainStoryElementFactory], + domainStoryRenderer: ["type", DomainStoryRenderer], + paletteProvider: ["type", DomainStoryPalette], + domainStoryRules: ["type", DomainStoryRules], + domainStoryUpdater: ["type", DomainStoryUpdater], + contextPadProvider: ["type", DomainStoryContextPadProvider], + elementFactoryBpmn: ["type", ElementFactory], + pathMap: ["type", PathMap], + replaceMenuProvider: ["type", ReplaceMenuProvider], + commandStack: ["type", CommandStack], + dSUpdateLabelHandler: ["type", DSUpdateLabelHandler], + headlineAndDescriptionUpdateHandler: [ + "type", + headlineAndDescriptionUpdateHandler, + ], + modeling: ["type", DSModeling], +}; diff --git a/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingPreview.js b/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingPreview.js new file mode 100644 index 00000000..ad1d24d8 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingPreview.js @@ -0,0 +1,140 @@ +"use strict"; + +import { + append as svgAppend, + attr as svgAttr, + create as svgCreate, + remove as svgRemove, +} from "tiny-svg"; + +import { translate } from "diagram-js/lib/util/SvgTransformUtil"; +import { elementTypes } from "../../../../common/domain/elementTypes"; +import { is } from "../util"; + +const MARKER_HIDDEN = "djs-element-hidden", + MARKER_LABEL_HIDDEN = "djs-label-hidden"; + +let annotationBoxHeight = 0; + +export function getAnnotationBoxHeight() { + return annotationBoxHeight; +} + +export default function DSLabelEditingPreview(eventBus, canvas, pathMap) { + let self = this; + + let defaultLayer = canvas.getDefaultLayer(); + let element, absoluteElementBBox, gfx; + + eventBus.on("directEditing.activate", function (context) { + let activeProvider = context.active; + + element = activeProvider.element.label || activeProvider.element; + + // text annotation + if (is(element, elementTypes.TEXTANNOTATION)) { + absoluteElementBBox = canvas.getAbsoluteBBox(element); + + gfx = svgCreate("g"); + + annotationBoxHeight = element.height; + + let textPathData = pathMap.getScaledPath("TEXT_ANNOTATION", { + xScaleFactor: 1, + yScaleFactor: 1, + containerWidth: element.width, + containerHeight: element.height, + position: { + mx: 0.0, + my: 0.0, + }, + }); + + let path = (self.path = svgCreate("path")); + + svgAttr(path, { + d: textPathData, + strokeWidth: 2, + stroke: getStrokeColor(element), + }); + + svgAppend(gfx, path); + + svgAppend(defaultLayer, gfx); + + translate(gfx, element.x, element.y); + } + + if (is(element, elementTypes.TEXTANNOTATION) || element.labelTarget) { + canvas.addMarker(element, MARKER_HIDDEN); + } else if ( + element.type.includes(elementTypes.ACTOR) || + element.type.includes(elementTypes.WORKOBJECT) || + element.type.includes(elementTypes.ACTIVITY) || + element.type.includes(elementTypes.GROUP) + ) { + canvas.addMarker(element, MARKER_LABEL_HIDDEN); + } + }); + + eventBus.on("directEditing.resize", function (context) { + // text annotation + if (is(element, elementTypes.TEXTANNOTATION)) { + let height = context.height, + dy = context.dy; + + let newElementHeight = Math.max( + (element.height / absoluteElementBBox.height) * (height + dy), + 0 + ); + annotationBoxHeight = newElementHeight; + + let textPathData = pathMap.getScaledPath("TEXT_ANNOTATION", { + xScaleFactor: 1, + yScaleFactor: 1, + containerWidth: element.width, + containerHeight: newElementHeight, + position: { + mx: 0.0, + my: 0.0, + }, + }); + + svgAttr(self.path, { + d: textPathData, + }); + } + }); + + eventBus.on( + ["directEditing.complete", "directEditing.cancel"], + function (context) { + let activeProvider = context.active; + + if (activeProvider) { + canvas.removeMarker( + activeProvider.element.label || activeProvider.element, + MARKER_HIDDEN + ); + canvas.removeMarker(element, MARKER_LABEL_HIDDEN); + } + + element = undefined; + absoluteElementBBox = undefined; + + if (gfx) { + svgRemove(gfx); + + gfx = undefined; + } + } + ); +} + +DSLabelEditingPreview.$inject = ["eventBus", "canvas", "pathMap"]; + +// helpers /////////////////// + +function getStrokeColor() { + return "black"; +} diff --git a/app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js b/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingProvider.js similarity index 52% rename from app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js rename to src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingProvider.js index 3ef55267..6b68512b 100644 --- a/app/domain-story-modeler/features/labeling/DSLabelEditingProvider.js +++ b/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelEditingProvider.js @@ -1,28 +1,30 @@ -'use strict'; +"use strict"; -import { assign } from 'min-dash'; +import { assign } from "min-dash"; -import { getLabel, autocomplete } from './DSLabelUtil'; +import { getLabel, autocomplete } from "./dsLabelUtil"; -import { is } from 'bpmn-js/lib/util/ModelUtil'; - -import { isAny } from 'bpmn-js/lib/features/modeling/util/ModelingUtil'; +import { isAny } from "bpmn-js/lib/features/modeling/util/ModelingUtil"; import { getExternalLabelMid, isLabelExternal, hasExternalLabel, - isLabel -} from 'bpmn-js/lib/util/LabelUtil'; + isLabel, +} from "bpmn-js/lib/util/LabelUtil"; +import { elementTypes } from "../../../../common/domain/elementTypes"; +import { is } from "../util"; -import { cleanDictionaries, getWorkObjectDictionary } from '../dictionary/dictionary'; -import { isDomainStoryElement } from '../../util/TypeCheck'; -import { ACTIVITY, GROUP, TEXTANNOTATION } from '../../language/elementTypes'; +let dictionaryService; let numberStash = 0; let stashUse = false; +export function initializeLabelEditingProvider(labelingDictionary) { + dictionaryService = labelingDictionary; +} + export function getNumberStash() { let number = { use: stashUse, number: numberStash }; stashUse = false; @@ -34,10 +36,14 @@ export function toggleStashUse(use) { } export default function DSLabelEditingProvider( - eventBus, canvas, directEditing, - modeling, resizeHandles, textRenderer, dSUpdateLabelHandler) { - - + eventBus, + canvas, + directEditing, + modeling, + resizeHandles, + textRenderer, + dSUpdateLabelHandler +) { this._canvas = canvas; this._modeling = modeling; this._textRenderer = textRenderer; @@ -46,10 +52,9 @@ export default function DSLabelEditingProvider( directEditing.registerProvider(this); // listen to dblclick on non-root elements - eventBus.on('element.dblclick', function(event) { + eventBus.on("element.dblclick", function (event) { activateDirectEdit(event.element, true); - if (is(event.element, ACTIVITY)) { - + if (is(event.element, elementTypes.ACTIVITY)) { // if we edit an activity, we do not want the standard editing box numberStash = event.element.businessObject.number; stashUse = true; @@ -58,41 +63,42 @@ export default function DSLabelEditingProvider( }); // complete on followup canvas operation - eventBus.on([ - 'element.mousedown', - 'drag.init', - 'canvas.viewbox.changing', - 'autoPlace', - 'popupMenu.open' - ], function() { - - if (directEditing.isActive()) { - directEditing.complete(); + eventBus.on( + [ + "element.mousedown", + "drag.init", + "canvas.viewbox.changing", + "autoPlace", + "popupMenu.open", + ], + function () { + if (directEditing.isActive()) { + directEditing.complete(); + } } - }); + ); // cancel on command stack changes - eventBus.on(['commandStack.changed'], function() { + eventBus.on(["commandStack.changed"], function () { if (directEditing.isActive()) { directEditing.cancel(); } }); - eventBus.on('directEditing.activate', function(event) { + eventBus.on("directEditing.activate", function (event) { resizeHandles.removeResizers(); let element = event.active.element; createAutocomplete(element); }); - eventBus.on('directEditing.complete', function() { - cleanDictionaries(canvas); + eventBus.on("directEditing.complete", function () { + dictionaryService.cleanDictionaries(canvas); }); - eventBus.on('create.end', 500, function(event) { - + eventBus.on("create.end", 500, function (event) { let element = event.shape, - canExecute = event.context.canExecute, - isTouch = event.isTouch; + canExecute = event.context.canExecute, + isTouch = event.isTouch; if (isTouch) { return; @@ -101,41 +107,47 @@ export default function DSLabelEditingProvider( if (!canExecute) { return; } - if (!is(element, ACTIVITY)) { + if (!is(element, elementTypes.ACTIVITY)) { activateDirectEdit(element); } }); - eventBus.on('autoPlace.end', 500, function(event) { + eventBus.on("autoPlace.end", 500, function (event) { activateDirectEdit(event.shape); }); function activateDirectEdit(element, force) { - if (force || - isAny(element, [TEXTANNOTATION]) || - isDomainStoryElement(element)) { - + if ( + force || + isAny(element, [elementTypes.TEXTANNOTATION]) || + element.businessObject.type.includes(elementTypes.DOMAINSTORY) + ) { directEditing.activate(element); } } function createAutocomplete(element) { - let editingBox = document.getElementsByClassName('djs-direct-editing-content'); - autocomplete(editingBox[0], getWorkObjectDictionary(), element); + let editingBox = document.getElementsByClassName( + "djs-direct-editing-content" + ); + autocomplete( + editingBox[0], + dictionaryService.getWorkObjectLabels(), + element + ); } } DSLabelEditingProvider.$inject = [ - 'eventBus', - 'canvas', - 'directEditing', - 'modeling', - 'resizeHandles', - 'textRenderer', - 'dSUpdateLabelHandler' + "eventBus", + "canvas", + "directEditing", + "modeling", + "resizeHandles", + "textRenderer", + "dSUpdateLabelHandler", ]; - /** * activate direct editing for activities and text annotations. * @@ -143,11 +155,10 @@ DSLabelEditingProvider.$inject = [ * * @return {Object} an object with properties bounds (position and size), text and options */ -DSLabelEditingProvider.prototype.activate = function(element) { - +DSLabelEditingProvider.prototype.activate = function (element) { // text - if (element.id === '__implicitroot') { - return ; + if (element.id === "__implicitroot") { + return; } let text = getLabel(element); @@ -156,7 +167,7 @@ DSLabelEditingProvider.prototype.activate = function(element) { } let context = { - text: text + text: text, }; // bounds @@ -169,26 +180,25 @@ DSLabelEditingProvider.prototype.activate = function(element) { // external labels if (isLabelExternal(element)) { assign(options, { - autoResize: true + autoResize: true, }); } // text annotations - if (is(element, TEXTANNOTATION)) { + if (is(element, elementTypes.TEXTANNOTATION)) { assign(options, { resizable: true, - autoResize: true + autoResize: true, }); } assign(context, { - options: options + options: options, }); return context; }; - /** * get the editing bounding box based on the element's size and position * @@ -197,7 +207,7 @@ DSLabelEditingProvider.prototype.activate = function(element) { * @return {Object} an object containing information about position * and size (fixed or minimum and/or maximum) */ -DSLabelEditingProvider.prototype.getEditingBBox = function(element) { +DSLabelEditingProvider.prototype.getEditingBBox = function (element) { let canvas = this._canvas; let target = element.label || element; @@ -206,7 +216,7 @@ DSLabelEditingProvider.prototype.getEditingBBox = function(element) { let mid = { x: bbox.x + bbox.width / 2, - y: bbox.y + bbox.height / 2 + y: bbox.y + bbox.height / 2, }; // default position @@ -215,65 +225,66 @@ DSLabelEditingProvider.prototype.getEditingBBox = function(element) { let zoom = canvas.zoom(); let defaultStyle = this._textRenderer.getDefaultStyle(), - externalStyle = this._textRenderer.getExternalStyle(); + externalStyle = this._textRenderer.getExternalStyle(); // take zoom into account let externalFontSize = externalStyle.fontSize * zoom, - externalLineHeight = externalStyle.lineHeight, - defaultFontSize = defaultStyle.fontSize * zoom, - defaultLineHeight = defaultStyle.lineHeight; + externalLineHeight = externalStyle.lineHeight, + defaultFontSize = defaultStyle.fontSize * zoom, + defaultLineHeight = defaultStyle.lineHeight; let style = { fontFamily: this._textRenderer.getDefaultStyle().fontFamily, - fontWeight: this._textRenderer.getDefaultStyle().fontWeight + fontWeight: this._textRenderer.getDefaultStyle().fontWeight, }; // adjust for groups - if (is(element, GROUP)) { - + if (is(element, elementTypes.GROUP)) { assign(bounds, { minWidth: bbox.width / 2.5 > 125 ? bbox.width / 2.5 : 125, maxWidth: bbox.width, minHeight: 30 * zoom, x: bbox.x, - y: bbox.y + y: bbox.y, }); assign(style, { - fontSize: defaultFontSize + 'px', + fontSize: defaultFontSize + "px", lineHeight: defaultLineHeight, - paddingTop: (7 * zoom) + 'px', - paddingBottom: (7 * zoom) + 'px', - paddingLeft: (5 * zoom) + 'px', - paddingRight: (5 * zoom) + 'px', - textAlign: 'left' + paddingTop: 7 * zoom + "px", + paddingBottom: 7 * zoom + "px", + paddingLeft: 5 * zoom + "px", + paddingRight: 5 * zoom + "px", + textAlign: "left", }); } // internal labels for tasks and collapsed call activities, // sub processes and participants - if (/^domainStory:actor\w*/.test(element.type) || /^domainStory:workObject\w*/.test(element.type)) { - + if ( + /^domainStory:actor\w*/.test(element.type) || + /^domainStory:workObject\w*/.test(element.type) + ) { assign(bounds, { width: bbox.width, minHeight: 30, y: bbox.y + bbox.height - 20, - x: bbox.x + x: bbox.x, }); assign(style, { - fontSize: defaultFontSize + 'px', + fontSize: defaultFontSize + "px", lineHeight: defaultLineHeight, - paddingTop: (7 * zoom) + 'px', - paddingBottom: (7 * zoom) + 'px', - paddingLeft: (5 * zoom) + 'px', - paddingRight: (5 * zoom) + 'px' + paddingTop: 7 * zoom + "px", + paddingBottom: 7 * zoom + "px", + paddingLeft: 5 * zoom + "px", + paddingRight: 5 * zoom + "px", }); } let width = 90 * zoom, - paddingTop = 7 * zoom, - paddingBottom = 4 * zoom; + paddingTop = 7 * zoom, + paddingBottom = 4 * zoom; // external labels for events, data elements, gateways and connections if (target.labelTarget) { @@ -281,29 +292,30 @@ DSLabelEditingProvider.prototype.getEditingBBox = function(element) { width: width, height: bbox.height + paddingTop + paddingBottom, x: mid.x - width / 2, - y: bbox.y - paddingTop + y: bbox.y - paddingTop, }); assign(style, { - fontSize: externalFontSize + 'px', + fontSize: externalFontSize + "px", lineHeight: externalLineHeight, - paddingTop: paddingTop + 'px', - paddingBottom: paddingBottom + 'px' + paddingTop: paddingTop + "px", + paddingBottom: paddingBottom + "px", }); } // external label not yet created - if (isLabelExternal(target) - && !hasExternalLabel(target) - && !isLabel(target)) { - + if ( + isLabelExternal(target) && + !hasExternalLabel(target) && + !isLabel(target) + ) { let externalLabelMid = getExternalLabelMid(element); let absoluteBBox = canvas.getAbsoluteBBox({ x: externalLabelMid.x, y: externalLabelMid.y, width: 0, - height: 0 + height: 0, }); let height = externalFontSize + paddingTop + paddingBottom; @@ -312,59 +324,58 @@ DSLabelEditingProvider.prototype.getEditingBBox = function(element) { width: width, height: height, x: absoluteBBox.x - width / 2, - y: absoluteBBox.y - height / 2 + y: absoluteBBox.y - height / 2, }); assign(style, { - fontSize: externalFontSize + 'px', + fontSize: externalFontSize + "px", lineHeight: externalLineHeight, - paddingTop: paddingTop + 'px', - paddingBottom: paddingBottom + 'px' + paddingTop: paddingTop + "px", + paddingBottom: paddingBottom + "px", }); } // text annotations - if (is(element, TEXTANNOTATION)) { + if (is(element, elementTypes.TEXTANNOTATION)) { assign(bounds, { width: bbox.width, height: bbox.height, minWidth: 30 * zoom, - minHeight: 10 * zoom + minHeight: 10 * zoom, }); assign(style, { - textAlign: 'left', - paddingTop: (7 * zoom) + 'px', - paddingBottom: (7 * zoom) + 'px', - paddingLeft: (5 * zoom) + 'px', - paddingRight: (5 * zoom) + 'px', - fontSize: defaultFontSize + 'px', - lineHeight: defaultLineHeight + textAlign: "left", + paddingTop: 7 * zoom + "px", + paddingBottom: 7 * zoom + "px", + paddingLeft: 5 * zoom + "px", + paddingRight: 5 * zoom + "px", + fontSize: defaultFontSize + "px", + lineHeight: defaultLineHeight, }); } return { bounds: bounds, style: style }; }; +DSLabelEditingProvider.prototype.update = function ( + element, + newLabel, + activeContextText, + bounds +) { + let newBounds, bbox; -DSLabelEditingProvider.prototype.update = function( - element, newLabel, - activeContextText, bounds) { - - let newBounds, - bbox; - - if (is(element, TEXTANNOTATION)) { - + if (is(element, elementTypes.TEXTANNOTATION)) { bbox = this._canvas.getAbsoluteBBox(element); newBounds = { x: element.x, y: element.y, - width: element.width / bbox.width * bounds.width, - height: element.height / bbox.height * bounds.height + width: (element.width / bbox.width) * bounds.width, + height: (element.height / bbox.height) * bounds.height, }; } this._modeling.updateLabel(element, newLabel, newBounds); -}; \ No newline at end of file +}; diff --git a/app/domain-story-modeler/features/labeling/DSLabelUtil.js b/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelUtil.js similarity index 75% rename from app/domain-story-modeler/features/labeling/DSLabelUtil.js rename to src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelUtil.js index f7c5fefd..02cbdff5 100644 --- a/app/domain-story-modeler/features/labeling/DSLabelUtil.js +++ b/src/app/modeler/domain-story-modeler/modeler/labeling/dsLabelUtil.js @@ -1,32 +1,26 @@ -'use strict'; +"use strict"; -import { is } from 'bpmn-js/lib/util/ModelUtil'; -import { - ACTOR, - WORKOBJECT, - ACTIVITY, - GROUP, - TEXTANNOTATION -} from '../../language/elementTypes'; +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { is } from "../util"; function getLabelAttr(semantic) { if ( - semantic.type.includes(ACTOR) || - semantic.type.includes(WORKOBJECT) || - semantic.type.includes(ACTIVITY) || - semantic.type.includes(GROUP) + semantic.type.includes(elementTypes.ACTOR) || + semantic.type.includes(elementTypes.WORKOBJECT) || + semantic.type.includes(elementTypes.ACTIVITY) || + semantic.type.includes(elementTypes.GROUP) ) { - return 'name'; + return "name"; } - if (is(semantic, TEXTANNOTATION)) { - return 'text'; + if (is(semantic, elementTypes.TEXTANNOTATION)) { + return "text"; } } function getNumberAttr(semantic) { - if (is(semantic, ACTIVITY)) { - return 'number'; + if (is(semantic, elementTypes.ACTIVITY)) { + return "number"; } } @@ -39,16 +33,16 @@ export function getLabel(element) { } let attr = getLabelAttr(semantic); if (attr && semantic) { - return semantic[attr] || ''; + return semantic[attr] || ""; } } export function getNumber(element) { let semantic = element.businessObject, - attr = getNumberAttr(semantic); + attr = getNumberAttr(semantic); if (attr) { - return semantic[attr] || ''; + return semantic[attr] || ""; } } @@ -70,7 +64,7 @@ export function setLabel(element, text) { export function setNumber(element, textNumber) { let semantic = element.businessObject, - attr = getNumberAttr(semantic); + attr = getNumberAttr(semantic); if (attr) { semantic[attr] = textNumber; @@ -82,10 +76,9 @@ export function setNumber(element, textNumber) { // select at which part of the activity the label should be attached to export function selectPartOfActivity(waypoints, angleActivity) { let selectedActivity = 0; - let i = 0; let linelength = 49; - for (i = 0; i < waypoints.length; i++) { + for (let i = 0; i < waypoints.length; i++) { if (angleActivity[i] === 0 || angleActivity[i] === 180) { let length = Math.abs(waypoints[i].x - waypoints[i + 1].x); if (length > linelength) { @@ -121,43 +114,40 @@ export function autocomplete(inp, arr, element) { let currentFocus; /* execute a function when someone writes in the text field:*/ - inp.addEventListener('input', function(e) { - + inp.addEventListener("input", function () { /* the direct editing field of actors and workobjects is a recycled html-element and has old values that need to be overridden*/ - if (element.type.includes(WORKOBJECT)) { + if (element.type.includes(elementTypes.WORKOBJECT)) { this.value = this.innerHTML; } let autocompleteList, - autocompleteItem, - val = this.value; + autocompleteItem, + val = this.value; /* close any already open lists of autocompleted values*/ closeAllLists(); currentFocus = -1; /* create a DIV element that will contain the items (values):*/ - autocompleteList = document.createElement('DIV'); - autocompleteList.setAttribute('id', 'autocomplete-list'); - autocompleteList.setAttribute('class', 'autocomplete-items'); + autocompleteList = document.createElement("DIV"); + autocompleteList.setAttribute("id", "autocomplete-list"); + autocompleteList.setAttribute("class", "autocomplete-items"); /* append the DIV element as a child of the autocomplete container:*/ this.parentNode.appendChild(autocompleteList); /* for each item in the array...*/ for (const name of arr) { - /* check if the item starts with the same letters as the text field value:*/ if (val) { if (name.substr(0, val.length).toUpperCase() == val.toUpperCase()) { - /* create a DIV element for each matching element:*/ - autocompleteItem = document.createElement('DIV'); + autocompleteItem = document.createElement("DIV"); /* make the matching letters bold:*/ autocompleteItem.innerHTML = - '' + + "" + name.substr(0, val.length) + - '' + + "" + name.substr(val.length); /* insert an input field that will hold the current name:*/ @@ -165,11 +155,10 @@ export function autocomplete(inp, arr, element) { ""; /* execute a function when someone clicks on the item (DIV element):*/ - autocompleteItem.onclick = function(e) { - + autocompleteItem.onclick = function () { /* insert the value for the autocomplete text field:*/ - inp.value = this.getElementsByTagName('input')[0].value; - inp.innerHTML = this.getElementsByTagName('input')[0].value; + inp.value = this.getElementsByTagName("input")[0].value; + inp.innerHTML = this.getElementsByTagName("input")[0].value; /* close the list of autocompleted values, (or any other open lists of autocompleted values:*/ @@ -181,19 +170,18 @@ export function autocomplete(inp, arr, element) { } // if we edit an actor, we do not want auto-complete, since actors generally are unique - if (element.type.includes(ACTOR)) { - autocompleteList.style.visibility = 'hidden'; + if (element.type.includes(elementTypes.ACTOR)) { + autocompleteList.style.visibility = "hidden"; } }); /* execute a function presses a key on the keyboard:*/ - inp.onkeydown = function(e) { - let autocompleteList = document.getElementById('autocomplete-list'); + inp.onkeydown = function (e) { + let autocompleteList = document.getElementById("autocomplete-list"); if (autocompleteList) { - autocompleteList = autocompleteList.getElementsByTagName('div'); + autocompleteList = autocompleteList.getElementsByTagName("div"); } if (e.keyCode === 40) { - /* If the arrow DOWN key is pressed, increase the currentFocus letiable:*/ currentFocus++; @@ -201,7 +189,6 @@ export function autocomplete(inp, arr, element) { /* and and make the current item more visible:*/ addActive(autocompleteList); } else if (e.keyCode === 38) { - // up /* If the arrow UP key is pressed, decrease the currentFocus letiable:*/ @@ -210,11 +197,9 @@ export function autocomplete(inp, arr, element) { /* and and make the current item more visible:*/ addActive(autocompleteList); } else if (e.keyCode === 13) { - /* If the ENTER key is pressed, prevent the form from being submitted,*/ e.preventDefault(); if (currentFocus > -1) { - /* and simulate a click on the "active" item:*/ if (autocompleteList && autocompleteList[currentFocus]) { autocompleteList[currentFocus].click(); @@ -224,7 +209,6 @@ export function autocomplete(inp, arr, element) { }; function addActive(autocompleteList) { - /* a function to classify an item as "active":*/ if (!autocompleteList || autocompleteList.length < 1) return false; @@ -234,26 +218,23 @@ export function autocomplete(inp, arr, element) { if (currentFocus < 0) currentFocus = autocompleteList.length - 1; /* add class "autocomplete-active":*/ - autocompleteList[currentFocus].classList.add('autocomplete-active'); + autocompleteList[currentFocus].classList.add("autocomplete-active"); } function removeActive(autocompleteList) { - /* a function to remove the "active" class from all autocomplete items:*/ if (autocompleteList.length > 1) { for (const item of autocompleteList) { - item.classList.remove('autocomplete-active'); + item.classList.remove("autocomplete-active"); } } } function closeAllLists(survivor) { - /* close all autocomplete lists in the document, except the one passed as an argument:*/ - let autocompleteList = document.getElementsByClassName( - 'autocomplete-items' - ); + let autocompleteList = + document.getElementsByClassName("autocomplete-items"); for (const item of autocompleteList) { if (survivor != item && survivor != inp) { item.parentNode.removeChild(item); @@ -262,7 +243,7 @@ export function autocomplete(inp, arr, element) { } /* execute a function when someone clicks in the document:*/ - document.addEventListener('click', function(e) { + document.addEventListener("click", function (e) { closeAllLists(e.target); }); } diff --git a/src/app/modeler/domain-story-modeler/modeler/labeling/dsUpdateLabelHandler.js b/src/app/modeler/domain-story-modeler/modeler/labeling/dsUpdateLabelHandler.js new file mode 100644 index 00000000..c565f7c7 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/labeling/dsUpdateLabelHandler.js @@ -0,0 +1,137 @@ +"use strict"; + +import { setLabel, getLabel, setNumber, getNumber } from "./dsLabelUtil"; + +import { + getExternalLabelMid, + isLabelExternal, + hasExternalLabel, + isLabel, +} from "bpmn-js/lib/util/LabelUtil"; + +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { getBusinessObject, is } from "../util"; + +const NULL_DIMENSIONS = { + width: 0, + height: 0, +}; + +/** + * a handler that updates the text of a BPMN element. + */ +export default function DSUpdateLabelHandler( + modeling, + textRenderer, + commandStack +) { + commandStack.registerHandler("element.updateCustomLabel", handlerFunction); + + function handlerFunction() { + /** + * Set the label and return the changed elements. + * + * Element parameter can be label itself or connection (i.e. sequence flow). + * + * @param {djs.model.Base} element + * @param {String} text + */ + + this.preExecute = function (ctx) { + let element = ctx.element, + businessObject = element.businessObject, + newLabel = ctx.newLabel, + newNumber = ctx.newNumber; + + if ( + !isLabel(element) && + isLabelExternal(element) && + !hasExternalLabel(element) && + (newLabel !== "" || newNumber !== "") + ) { + // create label + let paddingTop = 7; + + let labelCenter = getExternalLabelMid(element); + + labelCenter = { + x: labelCenter.x, + y: labelCenter.y + paddingTop, + }; + + modeling.createLabel(element, labelCenter, { + id: businessObject.id + "_label", + businessObject: businessObject, + }); + } + }; + + this.execute = function (ctx) { + ctx.oldLabel = getLabel(ctx.element); + ctx.oldNumber = getNumber(ctx.element); + return setText(ctx.element, ctx.newLabel, ctx.newNumber); + }; + + this.revert = function (ctx) { + return setText(ctx.element, ctx.oldLabel, ctx.oldNumber); + }; + + this.postExecute = function (ctx) { + let element = ctx.element, + label = element.label || element, + newLabel = ctx.newLabel, + newBounds = ctx.newBounds; + + if (isLabel(label) && newLabel.trim() === "") { + modeling.removeShape(label); + + return; + } + + // ignore internal labels for elements except text annotations + if ( + !isLabelExternal(element) && + !is(element, elementTypes.TEXTANNOTATION) + ) { + return; + } + + let bo = getBusinessObject(label); + + let text = bo.name || bo.text; + + // don't resize without text + if (!text) { + return; + } + + // resize element based on label _or_ pre-defined bounds + if (typeof newBounds === "undefined") { + newBounds = textRenderer.getLayoutedBounds(label, text); + } + + // setting newBounds to false or _null_ will + // disable the postExecute resize operation + if (newBounds) { + modeling.resizeShape(label, newBounds, NULL_DIMENSIONS); + } + }; + } +} + +function setText(element, text, textNumber) { + // external label if present + let label = element.label || element; + + let number = element.number || element; + + let labelTarget = element.labelTarget || element; + + let numberTarget = element.numberTarget || element; + setLabel(label, text); + setNumber(number, textNumber); + + return [label, labelTarget, number, numberTarget]; +} + +DSUpdateLabelHandler.$inject = ["modeling", "textRenderer", "commandStack"]; diff --git a/src/app/modeler/domain-story-modeler/modeler/labeling/index.js b/src/app/modeler/domain-story-modeler/modeler/labeling/index.js new file mode 100644 index 00000000..8d7d591e --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/labeling/index.js @@ -0,0 +1,21 @@ +"use strict"; + +import ChangeSupportModule from "diagram-js/lib/features/change-support"; +import ResizeModule from "diagram-js/lib/features/resize"; +import DirectEditingModule from "diagram-js-direct-editing"; + +import CommandStack from "diagram-js/lib/command/CommandStack"; +import DSUpdateLabelHandler from "./dsUpdateLabelHandler"; +import DSLabelEditingPreview from "./dsLabelEditingPreview"; +import DSLabelEditingProvider from "./dsLabelEditingProvider"; +import DSModeling from "../modeling/dSModeling"; + +export default { + __depends__: [ChangeSupportModule, ResizeModule, DirectEditingModule], + __init__: ["dSlabelEditingProvider", "dSlabelEditingPreview"], + dSlabelEditingProvider: ["type", DSLabelEditingProvider], + dSlabelEditingPreview: ["type", DSLabelEditingPreview], + dSUpdateLabelHandler: ["type", DSUpdateLabelHandler], + commandStack: ["type", CommandStack], + modeling: ["type ", DSModeling], +}; diff --git a/src/app/modeler/domain-story-modeler/modeler/labeling/position.js b/src/app/modeler/domain-story-modeler/modeler/labeling/position.js new file mode 100644 index 00000000..b92d0168 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/labeling/position.js @@ -0,0 +1,110 @@ +"use strict"; + +import { selectPartOfActivity } from "./dsLabelUtil"; +import { angleBetween } from "../../../../common/util/mathExtensions"; + +export function countLines(str) { + return str.split(/\r\n|\r|\n/).length; +} + +// determine the position of the label at the activity +export function labelPosition(waypoints, lines = 1) { + let amountWaypoints = waypoints.length; + let determinedPosition; + let xPos; + let yPos; + + if (amountWaypoints > 2) { + let angleActivity = new Array(amountWaypoints - 1); + for (let i = 0; i < amountWaypoints - 1; i++) { + // calculate the angles of the activities + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + + let selectedActivity = selectPartOfActivity(waypoints, angleActivity); + + xPos = labelPositionX( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + yPos = labelPositionY( + waypoints[selectedActivity], + waypoints[selectedActivity + 1], + lines + ); + + determinedPosition = { + x: xPos, + y: yPos, + selected: selectedActivity, + }; + + return determinedPosition; + } else { + xPos = labelPositionX(waypoints[0], waypoints[1]); + yPos = labelPositionY(waypoints[0], waypoints[1], lines); + + determinedPosition = { + x: xPos, + y: yPos, + selected: 0, + }; + + return determinedPosition; + } +} + +// calculate the X position of the label +export function labelPositionX(startPoint, endPoint) { + let angle = angleBetween(startPoint, endPoint); + let offsetX = 0; + let scaledAngle = 0; + if (angle === 0 || angle === 180 || angle === 90 || angle === 270) { + offsetX = 0; + } else if (angle > 0 && angle < 90) { + // endpoint in upper right quadrant + offsetX = 5 - angle / 6; + } else if (angle > 90 && angle < 180) { + // endpoint in upper left quadrant + scaledAngle = angle - 90; + offsetX = 5 - scaledAngle / 18; + } else if (angle > 180 && angle < 270) { + // endpoint in lower left quadrant + scaledAngle = angle - 180; + offsetX = scaledAngle / 18; + } else if (angle > 270) { + // endpoint in lower right quadrant + scaledAngle = angle - 270; + offsetX = 5 - scaledAngle / 6; + } + return offsetX + (startPoint.x + endPoint.x) / 2; +} + +// calculate the Y position of the label +export function labelPositionY(startPoint, endPoint, lines = 1) { + let angle = angleBetween(startPoint, endPoint); + let offsetY = 0; + let scaledAngle = 0; + + if (angle === 0 || angle === 180) { + offsetY = 15; + } else if (angle === 90 || angle === 270) { + offsetY = 0; + } else if (angle > 0 && angle < 90) { + // endpoint in upper right quadrant + offsetY = 15 - angle / 6; + } else if (angle > 90 && angle < 180) { + // endpoint in upper left quadrant + scaledAngle = angle - 90; + offsetY = (-scaledAngle / 9) * lines; + } else if (angle > 180 && angle < 270) { + // endpoint in lower left quadrant + scaledAngle = angle - 180; + offsetY = 15 - scaledAngle / 3; + } else if (angle > 270) { + // endpoint in lower right quadrant + scaledAngle = angle - 270; + offsetY = (-scaledAngle / 9) * lines; + } + return offsetY + (startPoint.y + endPoint.y) / 2; +} diff --git a/src/app/modeler/domain-story-modeler/modeler/modeling/dSModeling.js b/src/app/modeler/domain-story-modeler/modeler/modeling/dSModeling.js new file mode 100644 index 00000000..589df920 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/modeling/dSModeling.js @@ -0,0 +1,73 @@ +"use strict"; + +import Modeling from "bpmn-js/lib/features/modeling/Modeling"; + +import { inherits } from "util"; + +export default function DSModeling( + eventBus, + elementFactory, + commandStack, + domainStoryRules +) { + Modeling.call(this, eventBus, elementFactory, commandStack, domainStoryRules); +} + +Modeling.prototype.updateLabel = function (element, newLabel, newBounds) { + if (/^domainStory:/.test(element.type)) { + this._commandStack.execute("element.updateCustomLabel", { + element: element, + newLabel: newLabel, + newBounds: newBounds, + }); + } else { + this._commandStack.execute("element.updateLabel", { + element: element, + newLabel: newLabel, + newBounds: newBounds, + }); + } +}; + +Modeling.prototype.updateNumber = function (element, newNumber, newBounds) { + if (/^domainStory:/.test(element.type)) { + this._commandStack.execute("element.updateCustomLabel", { + element: element, + newNumber: newNumber, + newBounds: newBounds, + }); + } else { + this._commandStack.execute("element.updateLabel", { + element: element, + newNumber: newNumber, + newBounds: newBounds, + }); + } +}; + +Modeling.prototype.replaceShape = function (oldShape, newShape, hints) { + let context = { + oldShape: oldShape, + newData: newShape, + hints: hints || {}, + }; + + this._commandStack.execute("shape.replace", context); + return context.newShape; +}; + +Modeling.prototype.removeGroup = function (element) { + this._commandStack.execute("shape.removeGroupWithoutChildren", { + element: element, + }); + this.removeElements({ element }); +}; + +inherits(DSModeling, Modeling); + +DSModeling.$inject = [ + "eventBus", + "elementFactory", + "commandStack", + "domainStoryRules", +]; diff --git a/src/app/modeler/domain-story-modeler/modeler/modeling/index.js b/src/app/modeler/domain-story-modeler/modeler/modeling/index.js new file mode 100644 index 00000000..9aaa4e04 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/modeling/index.js @@ -0,0 +1,46 @@ +"use strict"; + +import DomainStoryPalette from "../palette/domainStoryPalette"; +import ElementFactory from "bpmn-js/lib/features/modeling/ElementFactory"; +import CreateModule from "diagram-js/lib/features/create"; +import PathMap from "bpmn-js/lib/draw/PathMap"; +import PopupMenuModule from "bpmn-js/lib/features/popup-menu"; +import ContextPadModule from "diagram-js/lib/features/context-pad"; +import CommandStack from "diagram-js/lib/command/CommandStack"; +import DSUpdateLabelHandler from "../labeling/dsUpdateLabelHandler"; +import DomainStoryUpdater from "../domainStoryUpdater"; +import DomainStoryElementFactory from "../domainStoryElementFactory"; +import headlineAndDescriptionUpdateHandler from "../updateHandler/headlineAndDescriptionUpdateHandler"; +import DomainStoryRenderer from "../domainStoryRenderer"; +import DSModeling from "./dSModeling"; +import DomainStoryRules from "../domainStoryRules"; +import ReplaceMenuProvider from "../change-icon/replaceMenuProvider"; +import DomainStoryContextPadProvider from "../context-pad/domainStoryContextPadProvider"; + +export default { + __depends__: [CreateModule, ContextPadModule, PopupMenuModule], + __init__: [ + "domainStoryRenderer", + "paletteProvider", + "domainStoryRules", + "domainStoryUpdater", + "contextPadProvider", + "replaceMenuProvider", + ], + elementFactory: ["type", DomainStoryElementFactory], + domainStoryRenderer: ["type", DomainStoryRenderer], + paletteProvider: ["type", DomainStoryPalette], + domainStoryRules: ["type", DomainStoryRules], + domainStoryUpdater: ["type", DomainStoryUpdater], + contextPadProvider: ["type", DomainStoryContextPadProvider], + elementFactoryBpmn: ["type", ElementFactory], + pathMap: ["type", PathMap], + replaceMenuProvider: ["type", ReplaceMenuProvider], + commandStack: ["type", CommandStack], + dSUpdateLabelHandler: ["type", DSUpdateLabelHandler], + headlineAndDescriptionUpdateHandler: [ + "type", + headlineAndDescriptionUpdateHandler, + ], + modeling: ["type", DSModeling], +}; diff --git a/app/domain-story-modeler/features/numbering/numbering.js b/src/app/modeler/domain-story-modeler/modeler/numbering/numbering.js similarity index 68% rename from app/domain-story-modeler/features/numbering/numbering.js rename to src/app/modeler/domain-story-modeler/modeler/numbering/numbering.js index 1a02b487..0f2ea4a1 100644 --- a/app/domain-story-modeler/features/numbering/numbering.js +++ b/src/app/modeler/domain-story-modeler/modeler/numbering/numbering.js @@ -1,47 +1,50 @@ -'use strict'; - -import { getActivitesFromActors } from '../../language/canvasElementRegistry'; -import { labelPosition } from '../labeling/position'; +"use strict"; +import { labelPosition } from "../labeling/position"; let numberRegistry = []; let multipleNumberRegistry = [false]; +let canvasElementRegistry; + +export function initializeNumbering(canvasElementRegistryService) { + canvasElementRegistry = canvasElementRegistryService; +} + // defines the box for activity numbers export function numberBoxDefinitions(element) { - let alignement = 'center'; + let alignment = "center"; let boxWidth = 30; let boxHeight = 30; let position = labelPosition(element.waypoints); let xPos = position.x - 50; let yPos = position.y - 19; - let box = { - textAlign: alignement, + return { + textAlign: alignment, width: boxWidth, height: boxHeight, x: xPos, - y: yPos + y: yPos, }; - return box; } // determine the next available number that is not yet used export function generateAutomaticNumber(elementActivity, commandStack) { let semantic = elementActivity.businessObject; - let activiesFromActors = []; + let activitiesFromActors; let usedNumbers = [0]; let wantedNumber = -1; - activiesFromActors = getActivitesFromActors(); + activitiesFromActors = canvasElementRegistry.getActivitiesFromActors(); - activiesFromActors.forEach(element => { + activitiesFromActors.forEach((element) => { if (element.businessObject.number != null) { usedNumbers.push(element.businessObject.number); } }); for (let i = 0; i < usedNumbers.length; i++) { - if ((!usedNumbers.includes(i))) { + if (!usedNumbers.includes(i)) { if (!usedNumbers.includes(String(i))) { wantedNumber = i; i = usedNumbers.length; @@ -52,25 +55,32 @@ export function generateAutomaticNumber(elementActivity, commandStack) { wantedNumber = usedNumbers.length; } - updateExistingNumbersAtGeneration(activiesFromActors, wantedNumber, commandStack); + updateExistingNumbersAtGeneration( + activitiesFromActors, + wantedNumber, + commandStack + ); semantic.number = wantedNumber; + return wantedNumber; } // update the numbers at the activities when generating a new activity -export function updateExistingNumbersAtGeneration(activiesFromActors, wantedNumber, commandStack) { - - activiesFromActors.forEach(element => { - +export function updateExistingNumbersAtGeneration( + activitiesFromActors, + wantedNumber, + commandStack +) { + activitiesFromActors.forEach((element) => { let number = +element.businessObject.number; if (number >= wantedNumber) { wantedNumber++; - setTimeout(function() { - commandStack.execute('activity.changed', { + setTimeout(function () { + commandStack.execute("activity.changed", { businessObject: element.businessObject, newLabel: element.businessObject.name, newNumber: number, - element: element + element: element, }); }, 10); } @@ -78,11 +88,14 @@ export function updateExistingNumbersAtGeneration(activiesFromActors, wantedNumb } // update the numbers at the activities when editing an activity -export function updateExistingNumbersAtEditing(activiesFromActors, wantedNumber, eventBus) { - +export function updateExistingNumbersAtEditing( + activitiesFromActors, + wantedNumber, + eventBus +) { // get a sorted list of all activities that could need changing let sortedActivities = [[]]; - activiesFromActors.forEach(activity => { + activitiesFromActors.forEach((activity) => { if (!sortedActivities[activity.businessObject.number]) { sortedActivities[activity.businessObject.number] = []; } @@ -91,10 +104,18 @@ export function updateExistingNumbersAtEditing(activiesFromActors, wantedNumber, // set the number of each activity to the next highest number, starting from the number, we overrode let currentNumber = wantedNumber; - for (currentNumber; currentNumber < sortedActivities.length; currentNumber++) { + for ( + currentNumber; + currentNumber < sortedActivities.length; + currentNumber++ + ) { if (sortedActivities[currentNumber]) { wantedNumber++; - setNumberOfActivity(sortedActivities[currentNumber], wantedNumber, eventBus); + setNumberOfActivity( + sortedActivities[currentNumber], + wantedNumber, + eventBus + ); } } } @@ -102,7 +123,7 @@ export function updateExistingNumbersAtEditing(activiesFromActors, wantedNumber, // get the IDs of activities with their associated number, only returns activities that are originating from an actor export function getNumbersAndIDs() { let iDWithNumber = []; - let activities = getActivitesFromActors(); + let activities = canvasElementRegistry.getActivitiesFromActors(); for (let i = activities.length - 1; i >= 0; i--) { let id = activities[i].businessObject.id; @@ -133,14 +154,14 @@ export function getMultipleNumberRegistry() { function setNumberOfActivity(elementArray, wantedNumber, eventBus) { if (elementArray) { - elementArray.forEach(element => { + elementArray.forEach((element) => { if (element) { let businessObject = element.businessObject; if (businessObject) { businessObject.number = wantedNumber; } - eventBus.fire('element.changed', { element }); + eventBus.fire("element.changed", { element }); } }); } -} \ No newline at end of file +} diff --git a/src/app/modeler/domain-story-modeler/modeler/palette/domainStoryPalette.js b/src/app/modeler/domain-story-modeler/modeler/palette/domainStoryPalette.js new file mode 100644 index 00000000..3c995b42 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/palette/domainStoryPalette.js @@ -0,0 +1,231 @@ +"use strict"; + +import { assign } from "min-dash"; +import { overrideAppendedIcons } from "src/app/domain-configuration/domain/allIcons"; +import { Dictionary } from "src/app/common/domain/dictionary/dictionary"; +import { elementTypes } from "src/app/common/domain/elementTypes"; +import { getNameFromType } from "src/app/common/util/naming"; + +/** + * A palette that allows you to create BPMN _and_ custom elements. + */ + +let iconDictionary; +let configuration; + +export function initializePalette(iconDictionaryService, configurationService) { + iconDictionary = iconDictionaryService; + configuration = configurationService; +} + +export default function PaletteProvider( + palette, + create, + elementFactory, + spaceTool, + lassoTool +) { + this._create = create; + this._elementFactory = elementFactory; + this._spaceTool = spaceTool; + this._lassoTool = lassoTool; + + palette.registerProvider(this); +} + +PaletteProvider.$inject = [ + "palette", + "create", + "elementFactory", + "spaceTool", + "lassoTool", + "modeling", +]; + +PaletteProvider.prototype.getPaletteEntries = function () { + let actions = {}, + create = this._create, + elementFactory = this._elementFactory, + spaceTool = this._spaceTool, + lassoTool = this._lassoTool; + + function createAction(type, group, className, title, options) { + function createListener(event) { + let shape = elementFactory.createShape(assign({ type: type }, options)); + + assign(shape.businessObject, { + id: shape.id, + }); + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded; + } + + create.start(event, shape); + } + + let shortType = type.replace(/^domainStory:/, ""); + + return { + group: group, + className: className, + title: "Create " + title || "Create " + shortType, + action: { + dragstart: createListener, + click: createListener, + }, + }; + } + + return initPalette(actions, spaceTool, lassoTool, createAction); +}; + +function appendCSSStyleCheat(customIcons) { + const sheetEl = document.createElement("style"); + document.head.appendChild(sheetEl); + + let customIconDict = new Dictionary(); + + customIconDict.appendDict(customIcons); + let customIconDictKeys = customIconDict.keysArray(); + + customIconDictKeys.forEach((name) => { + if (configuration.getAppendedIconDictionary().has(name)) { + let src = customIconDict.get(name); + + const iconStyle = + ".icon-domain-story-" + + name.toLowerCase() + + "::before{" + + " display: block;" + + ' content: url("data:image/svg+xml;utf8,' + + wrapSRCInSVG(src) + + '");' + + " margin: 3px;}"; + sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length); + } + }); +} + +function initPalette(actions, spaceTool, lassoTool, createAction) { + let config = iconDictionary.getIconConfig(); + + let customIcons = localStorage.getItem("appendedIcons"); + + if (customIcons) { + customIcons = JSON.parse(customIcons); + if (customIconsLegacy(customIcons)) { + customIcons = convertLegacyAppendedIconsToDict(customIcons); + } + if (customIcons.entries && customIcons.entries.forEach) { + const customIconsDict = new Dictionary(); + customIcons.entries.forEach((entry) => { + customIconsDict.putEntry(entry); + }); + overrideAppendedIcons(customIconsDict); + appendCSSStyleCheat(customIcons); + } + } + + iconDictionary.initTypeDictionaries(config.actors, config.workObjects); + + let actorTypes = iconDictionary.getTypeDictionary(elementTypes.ACTOR); + + actorTypes.keysArray().forEach((actorType) => { + addCanvasObjectTypes(actorType, createAction, actions, "actor"); + }); + + assign(actions, { + "actor-separator": { + group: "actor", + separator: true, + }, + }); + + let workObjectTypes = iconDictionary.getTypeDictionary( + elementTypes.WORKOBJECT + ); + + workObjectTypes.keysArray().forEach((workObjectType) => { + addCanvasObjectTypes(workObjectType, createAction, actions, "actor"); // TODO is ClassName 'actor' correct? + }); + + assign(actions, { + "workObject-separator": { + group: "workObject", + separator: true, + }, + "domainStory-group": createAction( + elementTypes.GROUP, + "group", + "icon-domain-story-tool-group", + "group" + ), + "group-separator": { + group: "group", + separator: true, + }, + "lasso-tool": { + group: "tools", + className: "bpmn-icon-lasso-tool", + title: "Activate the lasso tool", + action: { + click: function (event) { + lassoTool.activateSelection(event); + }, + }, + }, + "space-tool": { + group: "tools", + className: "bpmn-icon-space-tool", + title: "Activate the create/remove space tool", + action: { + click: function (event) { + spaceTool.activateSelection(event); + }, + }, + }, + }); + + return actions; +} + +function addCanvasObjectTypes(actorType, createAction, actions, className) { + let name = getNameFromType(actorType); + let icon = iconDictionary.getIconForType(actorType); + + let action = []; + action["domainStory-" + className + name] = createAction( + actorType, + className, + icon, + name + ); + assign(actions, action); +} + +function customIconsLegacy(customIcons) { + return !( + Object.keys(customIcons).length === 1 && + Object.keys(customIcons)[0] === "entries" + ); +} + +function convertLegacyAppendedIconsToDict(customIcons) { + let dict = new Dictionary(); + Object.keys(customIcons).forEach((key) => { + dict.set(key, customIcons[key]); + }); + return dict; +} + +// For some reason its important to use ' in the content for the Palette and ContextPad +// Do not change! +function wrapSRCInSVG(src) { + return ( + "" + + "" + ); +} diff --git a/src/app/modeler/domain-story-modeler/modeler/palette/index.js b/src/app/modeler/domain-story-modeler/modeler/palette/index.js new file mode 100644 index 00000000..e07eade2 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/palette/index.js @@ -0,0 +1,11 @@ +import ElementFactory from "diagram-js/lib/core/ElementFactory"; +import DSModeling from "../modeling/dSModeling"; + +("use strict"); + +export default { + __depends__: [], + __init__: ["paletteProvider"], + elementFactoryBpmn: ["type", ElementFactory], + modeling: ["type", DSModeling], +}; diff --git a/app/domain-story-modeler/modeler/UpdateHandler/DSActivityHandlers.js b/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsActivityHandlers.js similarity index 64% rename from app/domain-story-modeler/modeler/UpdateHandler/DSActivityHandlers.js rename to src/app/modeler/domain-story-modeler/modeler/updateHandler/dsActivityHandlers.js index cfead70b..9379f6c8 100644 --- a/app/domain-story-modeler/modeler/UpdateHandler/DSActivityHandlers.js +++ b/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsActivityHandlers.js @@ -1,24 +1,28 @@ -'use strict'; +"use strict"; -import { getNumbersAndIDs } from '../../features/numbering/numbering'; -import { getActivitesFromActors } from '../../language/canvasElementRegistry'; +import { getNumbersAndIDs } from "../numbering/numbering"; /** * commandStack Handler for changes at activities */ -export default function DSActivityHandler(commandStack, eventBus) { - - commandStack.registerHandler('activity.directionChange', activity_directionChange); - commandStack.registerHandler('activity.changed', activity_changed); +let canvasElementRegistry; +export function initializeDSActivityHandler(canvasElementRegistryService) { + canvasElementRegistry = canvasElementRegistryService; +} +export default function dsActivityHandler(commandStack, eventBus) { + commandStack.registerHandler( + "activity.directionChange", + activity_directionChange + ); + commandStack.registerHandler("activity.changed", activity_changed); // update the activity from the activity-dialog, either with or without number - // and change other activites too, to keep the numbers consistent + // and change other activities too, to keep the numbers consistent function activity_changed(modeling) { - - this.preExecute = function(context) { - context.oldLabel = context.businessObject.name || ' '; + this.preExecute = function (context) { + context.oldLabel = context.businessObject.name || " "; let oldNumbersWithIDs = getNumbersAndIDs(); modeling.updateLabel(context.businessObject, context.newLabel); @@ -28,54 +32,56 @@ export default function DSActivityHandler(commandStack, eventBus) { context.oldNumbersWithIDs = oldNumbersWithIDs; }; - this.execute = function(context) { + this.execute = function (context) { let semantic = context.businessObject; let element = context.element; if (context.newLabel && context.newLabel.length < 1) { - context.newLabel = ' '; + context.newLabel = " "; } semantic.name = context.newLabel; semantic.number = context.newNumber; - eventBus.fire('element.changed', { element }); + eventBus.fire("element.changed", { element }); }; - this.revert = function(context) { + this.revert = function (context) { let semantic = context.businessObject; let element = context.element; semantic.name = context.oldLabel; semantic.number = context.oldNumber; - revertAutomaticNumbergenerationChange(context.oldNumbersWithIDs, eventBus); + revertAutomaticNumbergenerationChange( + context.oldNumbersWithIDs, + eventBus + ); - eventBus.fire('element.changed', { element }); + eventBus.fire("element.changed", { element }); }; } // change the direction of a single activity without affecting other activities function activity_directionChange(modeling) { - - this.preExecute = function(context) { + this.preExecute = function (context) { context.oldNumber = context.businessObject.number; - context.oldWaypoints= context.element.waypoints; + context.oldWaypoints = context.element.waypoints; context.name = context.businessObject.name; if (!context.oldNumber) { - context.oldNumber=0; + context.oldNumber = 0; } modeling.updateNumber(context.businessObject, context.newNumber); }; - this.execute = function(context) { + this.execute = function (context) { let semantic = context.businessObject; let element = context.element; let swapSource = element.source; let newWaypoints = []; let waypoints = element.waypoints; - for (let i=waypoints.length-1; i>=0;i--) { + for (let i = waypoints.length - 1; i >= 0; i--) { newWaypoints.push(waypoints[i]); } @@ -88,10 +94,10 @@ export default function DSActivityHandler(commandStack, eventBus) { semantic.number = context.newNumber; element.waypoints = newWaypoints; - eventBus.fire('element.changed', { element }); + eventBus.fire("element.changed", { element }); }; - this.revert = function(context) { + this.revert = function (context) { let semantic = context.businessObject; let element = context.element; let swapSource = element.source; @@ -106,23 +112,23 @@ export default function DSActivityHandler(commandStack, eventBus) { semantic.number = context.oldNumber; element.waypoints = context.oldWaypoints; - eventBus.fire('element.changed', { element }); + eventBus.fire("element.changed", { element }); }; } } -// reverts the automatic changed done by the automatic number-gerneration at editing +// reverts the automatic changed done by the automatic number-generation at editing function revertAutomaticNumbergenerationChange(iDWithNumber, eventBus) { - let activities = getActivitesFromActors(); + let activities = canvasElementRegistry.getActivitesFromActors(); for (let i = activities.length - 1; i >= 0; i--) { for (let j = iDWithNumber.length - 1; j >= 0; j--) { if (iDWithNumber[j].id.includes(activities[i].businessObject.id)) { let element = activities[i]; element.businessObject.number = iDWithNumber[j].number; j = -5; - eventBus.fire('element.changed', { element }); + eventBus.fire("element.changed", { element }); iDWithNumber.splice(j, 1); } } } -} \ No newline at end of file +} diff --git a/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsElementHandler.js b/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsElementHandler.js new file mode 100644 index 00000000..66e78313 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsElementHandler.js @@ -0,0 +1,60 @@ +"use strict"; + +import { reworkGroupElements, undoGroupRework } from "../util"; + +export default function DSElementHandler(commandStack, eventBus) { + commandStack.registerHandler("element.colorChange", element_colorChange); + commandStack.registerHandler( + "shape.removeGroupWithoutChildren", + removeGroupWithoutChildren + ); + + function element_colorChange() { + this.preExecute = function (context) { + context.oldColor = context.businessObject.pickedColor; + }; + + this.execute = function (context) { + let semantic = context.businessObject; + let element = context.element; + + semantic.pickedColor = context.newColor; + + eventBus.fire("element.changed", { element }); + }; + + this.revert = function (context) { + let semantic = context.businessObject; + let element = context.element; + + semantic.pickedColor = context.oldColor; + + eventBus.fire("element.changed", { element }); + }; + } + + function removeGroupWithoutChildren() { + this.preExecute = function (ctx) { + ctx.parent = ctx.element.parent; + ctx.children = ctx.element.children.slice(); + }; + + this.execute = function (ctx) { + let element = ctx.element; + ctx.children.forEach((child) => { + undoGroupRework(element, child); + eventBus.fire("element.changed", { element: child }); + }); + eventBus.fire("shape.remove", { element }); + }; + + this.revert = function (ctx) { + // let element = ctx.element; + // eventBus.fire('shape.added', { element }); + // + // ctx.element.children.forEach(child => { + // reworkGroupElements(element, child); + // }) + }; + } +} diff --git a/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsMassRenameHandlers.js b/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsMassRenameHandlers.js new file mode 100644 index 00000000..9e97ec11 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/updateHandler/dsMassRenameHandlers.js @@ -0,0 +1,37 @@ +"use strict"; + +export default function DSMassRenameHandler(commandStack, eventBus) { + commandStack.registerHandler("domainStoryObjects.massRename", massRename); + + function massRename(modeling) { + this.preExecute = function (context) { + let relevantElements = context.elements; + + context.oldLabel = relevantElements[0].businessObject.name; + + relevantElements.forEach((element) => { + modeling.updateLabel(element.businessObject, confirm.newValue); + }); + }; + + this.execute = function (context) { + let relevantElements = context.elements; + relevantElements.forEach((element) => { + let semantic = element.businessObject; + semantic.name = context.newValue; + + eventBus.fire("element.changed", { element }); + }); + }; + + this.revert = function (context) { + let relevantElements = context.elements; + relevantElements.forEach((element) => { + let semantic = element.businessObject; + semantic.name = context.oldLabel; + + eventBus.fire("element.changed", { element }); + }); + }; + } +} diff --git a/src/app/modeler/domain-story-modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js b/src/app/modeler/domain-story-modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js new file mode 100644 index 00000000..608e1546 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js @@ -0,0 +1,35 @@ +"user strict"; + +/** + * a handler that updates the text of a BPMN element. + */ +export default function headlineAndDescriptionUpdateHandler( + commandStack, + titleService +) { + commandStack.registerHandler( + "story.updateHeadlineAndDescription", + handlerFunction + ); + + function handlerFunction() { + this.execute = function (ctx) { + ctx.oldTitle = titleService.getTitle(); + ctx.oldDescription = titleService.getDescription(); + + titleService.updateTitleAndDescription( + ctx.newTitle, + ctx.newDescription, + false + ); + }; + + this.revert = function (ctx) { + titleService.updateTitleAndDescription( + ctx.newTitle, + ctx.newDescription, + false + ); + }; + } +} diff --git a/app/domain-story-modeler/util/helpers.js b/src/app/modeler/domain-story-modeler/modeler/util.js similarity index 60% rename from app/domain-story-modeler/util/helpers.js rename to src/app/modeler/domain-story-modeler/modeler/util.js index a3bbbfe7..680fefc9 100644 --- a/app/domain-story-modeler/util/helpers.js +++ b/src/app/modeler/domain-story-modeler/modeler/util.js @@ -1,24 +1,24 @@ -'use strict'; +import { some } from "min-dash"; -export function debounce(fn, timeout) { - let timer; +export function is(element, type) { + const bo = getBusinessObject(element); - return function() { - if (timer) { - clearTimeout(timer); - } - timer = setTimeout(fn, timeout); - }; + return bo && typeof bo.$instanceOf == "function" && bo.$instanceOf(type); } -export function changeWebsiteTitle(title) { - document.title = title + ' - Domain Story Modeler'; +export function getBusinessObject(element) { + return (element && element.businessObject) || element; } -export function reworkGroupElements(parent, shape) { +export function isAny(element, types) { + return some(types, function (t) { + return is(element, t); + }); +} - parent.children.slice().forEach(innerShape => { - if ((innerShape.id) != shape.id) { +export function reworkGroupElements(parent, shape) { + parent.children.slice().forEach((innerShape) => { + if (innerShape.id !== shape.id) { if (innerShape.x >= shape.x && innerShape.x <= shape.x + shape.width) { if (innerShape.y >= shape.y && innerShape.y <= shape.y + shape.height) { innerShape.parent = shape; @@ -40,11 +40,10 @@ export function undoGroupRework(parent, shape) { shape.parent = superParent; const svgShape = document.querySelector( - '[data-element-id=' + shape.id + ']' + "[data-element-id=" + shape.id + "]" ).parentElement; const svgGroup = svgShape.parentElement; const svgGroupParent = svgGroup.parentElement.parentElement; - svgGroup.removeChild(svgShape); svgGroupParent.appendChild(svgShape); -} \ No newline at end of file +} diff --git a/src/app/modeler/domain-story-modeler/test/spec/dSLabelUtilSpec.js b/src/app/modeler/domain-story-modeler/test/spec/dSLabelUtilSpec.js new file mode 100644 index 00000000..b4c4da46 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/dSLabelUtilSpec.js @@ -0,0 +1,120 @@ +import "../../../../app/domain-story-modeler/util/MathExtensions"; +import { + calculateTextWidth, + selectPartOfActivity, +} from "../../modeler/labeling/dsLabelUtil"; +import { angleBetween } from "../../../../common/util/mathExtensions"; + +describe("DSLabelUtil", function () { + // will only be used for three or more waypoints + it("selectActivity bothSlanted test", function () { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 30, + y: 30, + }; + + const midPoint = { + x: 30, + y: 20, + }; + + const waypoints = [startPoint, midPoint, endPoint]; + let angleActivity = []; + + for (let i = 0; i < 3 - 1; i++) { + // calculate the angles of the activity + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + + const res = selectPartOfActivity(waypoints, angleActivity); + + expect(res).toEqual(0); + }); + + it("selectActivity secondStraight test", function () { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 100, + y: 30, + }; + + const midPoint = { + x: 20, + y: 30, + }; + + const waypoints = [startPoint, midPoint, endPoint]; + let angleActivity = []; + + for (let i = 0; i < 3 - 1; i++) { + // calculate the angles of the activity + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + const res = selectPartOfActivity(waypoints, angleActivity); + + expect(res).toEqual(1); + }); + + it("selectActivity firstStraight test", function () { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 30, + y: 30, + }; + + const midPoint = { + x: 30, + y: 10, + }; + + const waypoints = [startPoint, midPoint, endPoint]; + let angleActivity = []; + + for (let i = 0; i < 3 - 1; i++) { + // calculate the angles of the activity + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + + const res = selectPartOfActivity(waypoints, angleActivity); + + expect(res).toEqual(0); + }); +}); + +describe("calculateTextWidth", function () { + it("returns 0 for empty text", function () { + assert.equal(0, calculateTextWidth("")); + }); + + it("returns 0 for null", function () { + assert.equal(0, calculateTextWidth(null)); + }); + + it("returns 0 for undefined", function () { + assert.equal(0, calculateTextWidth(undefined)); + }); + + it("returns same value for same characters", function () { + expect(calculateTextWidth("AIW")).toEqual(calculateTextWidth("AIW")); + expect(calculateTextWidth("AIW")).toEqual(calculateTextWidth("IWA")); + }); + + it("distinguishes casing", function () { + expect(calculateTextWidth("abcdefghi")).toEqual( + calculateTextWidth("ABCDEFGHI") + ); + }); +}); diff --git a/src/app/modeler/domain-story-modeler/test/spec/domainStoryIdFactorySpec.js b/src/app/modeler/domain-story-modeler/test/spec/domainStoryIdFactorySpec.js new file mode 100644 index 00000000..255411a8 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/domainStoryIdFactorySpec.js @@ -0,0 +1,45 @@ +import DomainStoryIdFactory from "../../modeler/domainStoryIdFactory"; + +describe("DomainStoryIdFactory", function () { + it("generateId", function () { + const idFactory = new DomainStoryIdFactory(); + const res = idFactory.getId("shape"); + expect(res).not.toEqual("shape_0001"); + }); + + it("generateId equal length", function () { + const idFactory = new DomainStoryIdFactory(); + const res = idFactory.getId("shape"); + const otherId = "shape_0001"; + expect(res.length).toEqual(otherId.length); + }); + + it("generateId short length 001", function () { + const idFactory = new DomainStoryIdFactory(); + const res = idFactory.getId("shape"); + const otherId = "shape_001"; + expect(res.length).not.toEqual(otherId.length); + }); + + it("generateId long length 00001", function () { + const idFactory = new DomainStoryIdFactory(); + const res = idFactory.getId("shape"); + const otherId = "shape_00001"; + expect(res.length).not.toEqual(otherId.length); + }); + + it("generateId unique iD amount 5k", function () { + this.timeout(0); + const idFactory = new DomainStoryIdFactory(); + const res = []; + for (let i = 0; i < 5000; i++) { + res[i] = idFactory.getId(""); + } + + for (let i = 0; i < res.length - 1; i++) { + for (let j = i + 1; j < res.length; j++) { + expect(res[i]).not.toEqual(res[j]); + } + } + }); +}); diff --git a/src/app/modeler/domain-story-modeler/test/spec/domainStoryModeler.spec.ts b/src/app/modeler/domain-story-modeler/test/spec/domainStoryModeler.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/app/modeler/domain-story-modeler/test/spec/domainStoryModelingSpec.js b/src/app/modeler/domain-story-modeler/test/spec/domainStoryModelingSpec.js new file mode 100644 index 00000000..e5b9b319 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/domainStoryModelingSpec.js @@ -0,0 +1,270 @@ +import { bootstrapBpmnJS, inject } from "./testHelper"; + +import { assign } from "min-dash"; +import { test_conf } from "./test_conf"; +import DomainStoryModeler from "../../index"; +import { elementTypes } from "../../../../common/domain/elementTypes"; + +describe("domainStory modeling", function () { + const xml = require("./language/diagram.bpmn"); + + beforeEach(bootstrapBpmnJS(DomainStoryModeler, xml)); + + describe("custom elements", function () { + beforeEach(inject(function (bpmnjs) { + const businessObject = { + type: "custom:triangle", + id: "CustomTriangle_1", + }; + const customShape = { + businessObject: businessObject, + type: "custom:triangle", + id: "CustomTriangle_1", + x: 300, + y: 300, + height: 100, + width: 100, + }; + bpmnjs.addCustomElements([customShape]); + })); + + it("should export custom element", inject(function ( + bpmnjs, + elementRegistry, + modeling + ) { + // type has to be registered for test + // initTypeDictionaries(test_conf.actors); + + // given + const customElement = { + type: "domainStory:actorPerson", + id: "CustomActor_1", + x: 200, + y: 400, + height: 100, + width: 100, + }; + + const businessObject = { + type: "domainStory:actorPerson", + id: "CustomActor_1", + x: 150, + y: 350, + }; + + assign({ businessObject: businessObject }, customElement); + const position = { x: customElement.x, y: customElement.y }, + target = elementRegistry.get("Process_1"); + + modeling.createShape(customElement, position, target); + + // when + const customElements = bpmnjs.getCustomElements(); + + // then + // we can only check for parts of our element since the create shape function adds parts to the shape, we cannot model here + expect(customElements[1]).toContain(businessObject); + })); + + it("should not resize custom shape", inject(function ( + elementRegistry, + rules + ) { + // given + const customElement = elementRegistry.get("CustomTriangle_1"); + + // when + const allowed = rules.allowed("resize", { shape: customElement }); + + // then + expect(allowed).toBeFalsy(); + })); + + it("should update custom element", inject(function ( + elementRegistry, + modeling + ) { + // given + const customElement = elementRegistry.get("CustomTriangle_1"); + + // when + modeling.moveShape( + customElement, + { x: 200, y: 50 }, + customElement.parent + ); + + // then + expect(customElement.x).toEqual(500); + expect(customElement.y).toEqual(350); + })); + }); + + describe("custom connections", function () { + beforeEach(inject(function (bpmnjs) { + const customShape = { + type: "custom:triangle", + id: "CustomTriangle_1", + x: 400, + y: 300, + }; + + bpmnjs.addCustomElements([customShape]); + })); + + it("should export custom connection", inject(function ( + bpmnjs, + elementRegistry, + modeling + ) { + // given + const customShape = elementRegistry.get("CustomTriangle_1"), + taskShape = elementRegistry.get("Task_1"); + + modeling.connect(customShape, taskShape, { + type: CONNECTION, + id: "CustomConnection_1", + }); + + // when + const customElements = bpmnjs.getCustomElements(); + + // then + const ids = customElements.map(function (element) { + return element.id; + }); + + expect(ids).toContain("CustomConnection_1"); + })); + + it("should not connect custom shape to start event", inject(function ( + elementRegistry, + rules + ) { + // given + const customShape = elementRegistry.get("CustomTriangle_1"), + startEventShape = elementRegistry.get("StartEvent_1"); + + // when + const allowed = rules.allowed("connection.create", { + source: customShape, + target: startEventShape, + }); + + // then + expect(allowed).toBeFalsy(); + })); + + it("should reconnect start", inject(function ( + bpmnjs, + elementRegistry, + modeling + ) { + // given + const customShape = elementRegistry.get("CustomTriangle_1"), + taskShape = elementRegistry.get("Task_1"); + + const customConnection = modeling.connect(customShape, taskShape, { + type: elementTypes.CONNECTION, + }); + + bpmnjs.addCustomElements([ + { + type: "doaminStory:actor", + id: "CustomCircle_1", + x: 200, + y: 300, + }, + ]); + + const customCircle = elementRegistry.get("CustomCircle_1"); + + // when + modeling.reconnectStart(customConnection, customCircle, { + x: customCircle.x + customCircle.width / 2, + y: customCircle.y + customCircle.height / 2, + }); + + // then + expect(customConnection.source).toEqual(customCircle); + expect(customConnection.target).toEqual(taskShape); + })); + + it("should reconnect end", inject(function ( + bpmnjs, + elementRegistry, + modeling + ) { + // given + const customShape = elementRegistry.get("CustomTriangle_1"), + taskShape1 = elementRegistry.get("Task_1"), + taskShape2 = elementRegistry.get("Task_2"); + + const customConnection = modeling.connect(customShape, taskShape1, { + type: elementTypes.CONNECTION, + }); + + // when + modeling.reconnectEnd(customConnection, taskShape2, { + x: taskShape2.x + taskShape2.width / 2, + y: taskShape2.y + taskShape2.height / 2, + }); + + // then + expect(customConnection.source).toEqual(customShape); + expect(customConnection.target).toEqual(taskShape2); + })); + + it("should update custom connection", inject(function ( + elementRegistry, + modeling + ) { + // given + const customElement = elementRegistry.get("CustomTriangle_1"), + taskShape = elementRegistry.get("Task_1"); + + const customConnection = modeling.connect(customElement, taskShape, { + type: elementTypes.CONNECTION, + }); + + // when + modeling.moveShape( + customElement, + { x: 200, y: 50 }, + customElement.parent + ); + + // then + + const waypoint1 = customConnection.businessObject.waypoints[0]; + const waypoint2 = customConnection.businessObject.waypoints[1]; + + expect(waypoint1.x).toEqual(600); + expect(waypoint1.y).toEqual(351); + expect(waypoint2.x).toEqual(354); + expect(waypoint2.y).toEqual(157); + })); + + it("should remove deleted connection from _customElements", inject(function ( + bpmnjs, + elementRegistry, + modeling + ) { + // given + const customShape = elementRegistry.get("CustomTriangle_1"), + taskShape = elementRegistry.get("Task_1"), + customElements = bpmnjs.getCustomElements(); + + const customConnection = modeling.connect(customShape, taskShape, { + type: elementTypes.CONNECTION, + }); + + // when + modeling.removeConnection(customConnection); + + // then + expect(customElements.length).toEqual(1); + })); + }); +}); diff --git a/test/spec/language/Test_2018-08-21.dst b/src/app/modeler/domain-story-modeler/test/spec/language/Test_2018-08-21.dst similarity index 100% rename from test/spec/language/Test_2018-08-21.dst rename to src/app/modeler/domain-story-modeler/test/spec/language/Test_2018-08-21.dst diff --git a/test/spec/language/diagram.bpmn b/src/app/modeler/domain-story-modeler/test/spec/language/diagram.bpmn similarity index 100% rename from test/spec/language/diagram.bpmn rename to src/app/modeler/domain-story-modeler/test/spec/language/diagram.bpmn diff --git a/src/app/modeler/domain-story-modeler/test/spec/language/dstJsons.js b/src/app/modeler/domain-story-modeler/test/spec/language/dstJsons.js new file mode 100644 index 00000000..ab417f25 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/language/dstJsons.js @@ -0,0 +1,168 @@ +"use strict"; + +export const jsonString = + '[{"type":"domainStory:actorPerson","name":"","id":"shape_3050","x":178,"y":133,"width":30,"height":30,"pickedColor":"black"},' + + '{"type":"domainStory:workObjectDocument","name":"","id":"shape_8681","x":508,"y":133,"width":30,"height":30,"pickedColor":"black"},' + + '{"type":"domainStory:activity","name":"","id":"connection_3004","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_3050","target":"shape_8681","pickedColor":"black"},' + + '{"info":"test"}]'; + +export const brokenJsonString = + '[{"type":"domainStory:actorPerson","name":"","id":"shape_3050","x":178,"y":133,"width":30,"height":30},' + + '{"type":"domainStory:workObjectDocument","name":"","id":"shape_8681","x":508,"y":133,"width":30,"height":30},' + + '{"type":"domainStory:activity","name":"","id":"connection_0001","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_0001","target":"shape_0002"},' + + '{"type":"domainStory:activity","name":"","id":"connection_3004","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_3050","target":"shape_8681"},' + + '{"info":"test"}]'; + +export const oldIntricateV_0_2_0_JsonString = + '[{"type":"domainStory:group","name":"ein gruppenname","id":"shape_9638","x":751,"y":330,"height":275,"width":525},' + + '{"type":"domainStory:actorPerson","name":"ein actor name","id":"shape_6458","x":547,"y":223},' + + '{"type":"domainStory:workObject","name":"","id":"shape_8970","x":681,"y":223},' + + '{"type":"domainStory:actorSystem","name":"","id":"shape_8118","x":976,"y":223},' + + '{"type":"domainStory:workObject","name":"","id":"shape_9327","x":987,"y":346},' + + '{"type":"domainStory:workObject","name":"ein workobject name","id":"shape_5439","x":681,"y":371},' + + '{"type":"domainStory:workObjectCall","name":"","id":"shape_5296","x":681,"y":506},' + + '{"type":"domainStory:workObject","name":"","id":"shape_8808","x":1193,"y":506},' + + '{"type":"domainStory:actorPerson","name":"","id":"shape_3974","x":987,"y":506},' + + '{"type":"domainStory:activity","name":"ein labeltext","id":"connection_6847","waypoints":[{"original":{"x":585,"y":261},"x":628,"y":261},{"original":{"x":719,"y":261},"x":681,"y":261}],"source":"shape_6458","target":"shape_8970","number":1},' + + '{"type":"domainStory:activity","name":"","id":"connection_0720","waypoints":[{"original":{"x":719,"y":261},"x":762,"y":261},{"original":{"x":1014,"y":261},"x":976,"y":261}],"source":"shape_8970","target":"shape_8118"},' + + '{"type":"domainStory:activity","name":"","id":"connection_9638","waypoints":[{"original":{"x":1014,"y":261},"x":1018,"y":308},{"original":{"x":1025,"y":384},"x":1022,"y":346}],"source":"shape_8118","target":"shape_9327","number":2},' + + '{"type":"domainStory:activity","name":"","id":"connection_8306","waypoints":[{"original":{"x":719,"y":261},"x":719,"y":308},{"original":{"x":719,"y":409},"x":719,"y":371}],"source":"shape_8970","target":"shape_5439"},' + + '{"type":"domainStory:activity","name":"","id":"connection_6550","waypoints":[{"original":{"x":719,"y":409},"x":719,"y":456},{"original":{"x":719,"y":544},"x":719,"y":506}],"source":"shape_5439","target":"shape_5296"},' + + '{"type":"domainStory:activity","name":"","id":"connection_0196","waypoints":[{"original":{"x":1025,"y":384},"x":1025,"y":431},{"original":{"x":1025,"y":544},"x":1025,"y":506}],"source":"shape_9327","target":"shape_3974"},' + + '{"type":"domainStory:activity","name":"","id":"connection_2991","waypoints":[{"original":{"x":1025,"y":544},"x":1072,"y":548},{"original":{"x":1226,"y":563},"x":1193,"y":560}],"source":"shape_3974","target":"shape_8808","number":3},' + + '{"type":"domainStory:activity","name":"","id":"connection_9263","waypoints":[{"original":{"x":719,"y":544},"x":764,"y":547},{"original":{"x":1005,"y":560},"x":987,"y":559}],"source":"shape_5296","target":"shape_3974"},' + + '{"type":"domainStory:textAnnotation","name":"","id":"shape_5750","x":1106,"y":382,"text":"ein weiteres kommentar","number":42},' + + '{"type":"domainStory:connection","name":"","id":"connection_6966","waypoints":[{"original":{"x":1025,"y":544},"x":1045,"y":522},{"original":{"x":1156,"y":397},"x":1143,"y":412}],"source":"shape_3974","target":"shape_5750"},' + + '{"type":"domainStory:textAnnotation","name":"","id":"shape_3367","x":1109,"y":201,"text":"ein kommentar","number":30},' + + '{"type":"domainStory:connection","name":"","id":"connection_0733","waypoints":[{"original":{"x":1014,"y":261},"x":1046,"y":251},{"original":{"x":1159,"y":216},"x":1111,"y":231}],"source":"shape_8118","target":"shape_3367"},' + + '{"info":"Eine Beschreibung"}]'; + +export const oldIntricateV_0_3_0_JsonString = + '[{"type":"domainStory:group","name":"ein gruppenname","id":"shape_9638","x":751,"y":330,"height":275,"width":525},' + + '{"type":"domainStory:actorPerson","name":"ein actor name","id":"shape_6458","x":547,"y":223},' + + '{"type":"domainStory:workObject","name":"","id":"shape_8970","x":681,"y":223},' + + '{"type":"domainStory:actorSystem","name":"","id":"shape_8118","x":976,"y":223},' + + '{"type":"domainStory:workObject","name":"","id":"shape_9327","x":987,"y":346},' + + '{"type":"domainStory:workObject","name":"ein workobject name","id":"shape_5439","x":681,"y":371},' + + '{"type":"domainStory:workObjectCall","name":"","id":"shape_5296","x":681,"y":506},' + + '{"type":"domainStory:workObject","name":"","id":"shape_8808","x":1193,"y":506},' + + '{"type":"domainStory:actorPerson","name":"","id":"shape_3974","x":987,"y":506},' + + '{"type":"domainStory:textAnnotation","name":"","id":"shape_5750","x":1106,"y":382,"text":"ein weiteres kommentar","number":42},' + + '{"type":"domainStory:textAnnotation","name":"","id":"shape_3367","x":1109,"y":201,"text":"ein kommentar","number":30},' + + '{"type":"domainStory:activity","name":"ein labeltext","id":"connection_6847","waypoints":[{"original":{"x":585,"y":261},"x":628,"y":261},{"original":{"x":719,"y":261},"x":681,"y":261}],"source":"shape_6458","target":"shape_8970","number":1},' + + '{"type":"domainStory:activity","name":"","id":"connection_0720","waypoints":[{"original":{"x":719,"y":261},"x":762,"y":261},{"original":{"x":1014,"y":261},"x":976,"y":261}],"source":"shape_8970","target":"shape_8118","number":null},' + + '{"type":"domainStory:activity","name":"","id":"connection_9638","waypoints":[{"original":{"x":1014,"y":261},"x":1018,"y":308},{"original":{"x":1025,"y":384},"x":1022,"y":346}],"source":"shape_8118","target":"shape_9327","number":2},' + + '{"type":"domainStory:activity","name":"","id":"connection_8306","waypoints":[{"original":{"x":719,"y":261},"x":719,"y":308},{"original":{"x":719,"y":409},"x":719,"y":371}],"source":"shape_8970","target":"shape_5439","number":null},' + + '{"type":"domainStory:activity","name":"","id":"connection_6550","waypoints":[{"original":{"x":719,"y":409},"x":719,"y":456},{"original":{"x":719,"y":544},"x":719,"y":506}],"source":"shape_5439","target":"shape_5296","number":null},' + + '{"type":"domainStory:activity","name":"","id":"connection_0196","waypoints":[{"original":{"x":1025,"y":384},"x":1025,"y":431},{"original":{"x":1025,"y":544},"x":1025,"y":506}],"source":"shape_9327","target":"shape_3974","number":null},' + + '{"type":"domainStory:activity","name":"","id":"connection_2991","waypoints":[{"original":{"x":1025,"y":544},"x":1072,"y":548},{"original":{"x":1226,"y":563},"x":1193,"y":560}],"source":"shape_3974","target":"shape_8808","number":3},' + + '{"type":"domainStory:activity","name":"","id":"connection_9263","waypoints":[{"original":{"x":719,"y":544},"x":764,"y":547},{"original":{"x":1005,"y":560},"x":987,"y":559}],"source":"shape_5296","target":"shape_3974","number":null},' + + '{"type":"domainStory:connection","name":"","id":"connection_6966","waypoints":[{"original":{"x":1025,"y":544},"x":1045,"y":522},{"original":{"x":1156,"y":397},"x":1143,"y":412}],"source":"shape_3974","target":"shape_5750"},' + + '{"type":"domainStory:connection","name":"","id":"connection_0733","waypoints":[{"original":{"x":1014,"y":261},"x":1046,"y":251},{"original":{"x":1159,"y":216},"x":1111,"y":231}],"source":"shape_8118","target":"shape_3367"},' + + '{"info":"Eine Beschreibung"}]'; + +export const intricateV0_5_0_JsonString = + '[{"type":"domainStory:actorPerson","name":"movie-goer","id":"shape_9977","x":214,"y":164},' + + '{"type":"domainStory:workObjectDocument","name":"schedule","id":"shape_3526","x":214,"y":-45},' + + '{"type":"domainStory:textAnnotation","name":"","id":"shape_1144","x":316,"y":-43,"text":"e.g. on billboard","number":27.874564459930312},' + + '{"type":"domainStory:actorPerson","name":"cashier","id":"shape_4658","x":672,"y":164},' + + '{"type":"domainStory:workObjectConversation","name":"movie, # of seats, time,..","id":"shape_5151","x":522,"y":-45},' + + '{"type":"domainStory:actorSystem","name":"ticket system","id":"shape_6138","x":920,"y":164},' + + '{"type":"domainStory:workObjectInfo","name":"available seats","id":"shape_8031","x":803,"y":-45},' + + '{"type":"domainStory:workObjectDocument","name":"available seats","id":"shape_3387","x":522,"y":77},' + + '{"type":"domainStory:workObjectConversation","name":"seats","id":"shape_7904","x":522,"y":190},' + + '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_8152","x":803,"y":99},' + + '{"type":"domainStory:workObjectInfo","name":"chosen seats","id":"shape_4138","x":1071,"y":164},' + + '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_9422","x":522,"y":283},' + + '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_5209","x":522,"y":390},' + + '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_2043","x":803,"y":264},' + + '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_7902","x":522,"y":475},' + + '{"type":"domainStory:activity","name":"chooses movie from","id":"connection_5202","number":"1","waypoints":[{"original":{"x":252,"y":202},"x":252,"y":164},{"original":{"x":252,"y":-7},"x":252,"y":40}],"source":"shape_9977","target":"shape_3526"},' + + '{"type":"domainStory:connection","name":"","id":"connection_7380","waypoints":[{"original":{"x":252,"y":-7},"x":288,"y":-14},{"original":{"x":366,"y":-29},"x":316,"y":-19}],"source":"shape_3526","target":"shape_1144"},' + + '{"type":"domainStory:activity","name":"asks for","id":"connection_7781","number":"2","waypoints":[{"original":{"x":252,"y":202},"x":277,"y":185},{"original":{"x":560,"y":-7},"x":522,"y":19}],"source":"shape_9977","target":"shape_5151"},' + + '{"type":"domainStory:activity","name":"","id":"connection_3361","number":null,"waypoints":[{"original":{"x":560,"y":-7},"x":602,"y":-7},{"x":697,"y":-7},{"original":{"x":697,"y":215},"x":697,"y":164}],"source":"shape_5151","target":"shape_4658"},' + + '{"type":"domainStory:activity","name":"in","id":"connection_5224","number":null,"waypoints":[{"original":{"x":841,"y":-7},"x":883,"y":-7},{"x":925,"y":-7},{"original":{"x":958,"y":202},"x":952,"y":164}],"source":"shape_8031","target":"shape_6138"},' + + '{"type":"domainStory:activity","name":"looks up","id":"connection_9708","number":3,"waypoints":[{"original":{"x":710,"y":202},"x":718,"y":167},{"x":755,"y":-7},{"original":{"x":809,"y":-7},"x":803,"y":-7}],"source":"shape_4658","target":"shape_8031"},' + + '{"type":"domainStory:activity","name":"shows","id":"connection_2251","number":4,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":180},{"original":{"x":560,"y":115},"x":593,"y":134}],"source":"shape_4658","target":"shape_3387"},' + + '{"type":"domainStory:activity","name":"to","id":"connection_6291","number":null,"waypoints":[{"original":{"x":560,"y":115},"x":522,"y":128},{"original":{"x":248,"y":219},"x":296,"y":203}],"source":"shape_3387","target":"shape_9977"},' + + '{"type":"domainStory:activity","name":"selects","id":"connection_8965","number":5,"waypoints":[{"original":{"x":252,"y":202},"x":294,"y":211},{"x":369,"y":228},{"original":{"x":560,"y":228},"x":522,"y":228}],"source":"shape_9977","target":"shape_7904"},' + + '{"type":"domainStory:activity","name":"","id":"connection_3680","number":null,"waypoints":[{"original":{"x":560,"y":228},"x":597,"y":222},{"original":{"x":713,"y":204},"x":672,"y":210}],"source":"shape_7904","target":"shape_4658"},' + + '{"type":"domainStory:activity","name":"issues","id":"connection_7770","number":6,"waypoints":[{"original":{"x":710,"y":202},"x":738,"y":188},{"original":{"x":841,"y":137},"x":803,"y":156}],"source":"shape_4658","target":"shape_8152"},' + + '{"type":"domainStory:activity","name":"","id":"connection_2904","number":null,"waypoints":[{"original":{"x":841,"y":137},"x":874,"y":156},{"original":{"x":954,"y":201},"x":920,"y":182}],"source":"shape_8152","target":"shape_6138"},' + + '{"type":"domainStory:activity","name":"reserves","id":"connection_8784","number":7,"waypoints":[{"original":{"x":958,"y":202},"x":1000,"y":202},{"original":{"x":1109,"y":202},"x":1071,"y":202}],"source":"shape_6138","target":"shape_4138"},' + + '{"type":"domainStory:activity","name":"tells","id":"connection_6154","number":8,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":232},{"original":{"x":560,"y":321},"x":584,"y":302}],"source":"shape_4658","target":"shape_9422"},' + + '{"type":"domainStory:activity","name":"","id":"connection_6050","number":null,"waypoints":[{"original":{"x":560,"y":321},"x":522,"y":321},{"x":469,"y":321},{"original":{"x":245,"y":216},"x":275,"y":230}],"source":"shape_9422","target":"shape_9977"},' + + '{"type":"domainStory:activity","name":"pays","id":"connection_7890","number":9,"waypoints":[{"original":{"x":252,"y":202},"x":265,"y":241},{"x":328,"y":428},{"original":{"x":560,"y":428},"x":522,"y":428}],"source":"shape_9977","target":"shape_5209"},' + + '{"type":"domainStory:activity","name":"","id":"connection_7262","number":null,"waypoints":[{"original":{"x":560,"y":428},"x":602,"y":428},{"x":661,"y":428},{"original":{"x":699,"y":239},"x":697,"y":249}],"source":"shape_5209","target":"shape_4658"},' + + '{"type":"domainStory:activity","name":"prints","id":"connection_8506","number":10,"waypoints":[{"original":{"x":710,"y":202},"x":739,"y":224},{"original":{"x":841,"y":302},"x":803,"y":273}],"source":"shape_4658","target":"shape_2043"},' + + '{"type":"domainStory:activity","name":"with","id":"connection_0126","number":null,"waypoints":[{"original":{"x":841,"y":302},"x":866,"y":284},{"original":{"x":971,"y":209},"x":920,"y":245}],"source":"shape_2043","target":"shape_6138"},' + + '{"type":"domainStory:activity","name":"hands over","id":"connection_1646","number":"11","waypoints":[{"original":{"x":710,"y":202},"x":710,"y":249},{"x":710,"y":513},{"original":{"x":560,"y":513},"x":603,"y":513}],"source":"shape_4658","target":"shape_7902"},' + + '{"info":"Assumption: no line at box office, seats available, cash payment"},' + + '{"version":"0.5.0"}]'; + +export const intricateConfig = { + actors: { + Person: + '', + Group: + '', + System: + '', + Pet: '', + }, + workObjects: { + Conversation: + '', + Document: + '', + Folder: + '', + Call: '', + Email: + '', + Info: '', + Flag: '', + }, +}; + +export const intricateV0_6_0_JSONString = + "[" + + '{"type":"domainStory:workObjectFlag","name":"","id":"shape_2670","x":795,"y":-51},' + + '{"type":"domainStory:actorPet","name":"","id":"shape_4433","x":474,"y":-51},' + + '{"type":"domainStory:actorPerson","name":"movie-goer","id":"shape_9977","x":214,"y":164},' + + '{"type":"domainStory:workObjectDocument","name":"schedule","id":"shape_3526","x":214,"y":-45},' + + '{"type":"domainStory:textAnnotation","name":"","id":"shape_1144","x":316,"y":-43,"text":"e.g. on billboard","number":27.874564459930312},' + + '{"type":"domainStory:actorPerson","name":"cashier","id":"shape_4658","x":672,"y":164},' + + '{"type":"domainStory:workObjectConversation","name":"movie, # of seats, time,..","id":"shape_5151","x":522,"y":-45},' + + '{"type":"domainStory:actorSystem","name":"ticket system","id":"shape_6138","x":920,"y":164},' + + '{"type":"domainStory:workObjectInfo","name":"available seats","id":"shape_8031","x":803,"y":-45},' + + '{"type":"domainStory:workObjectDocument","name":"available seats","id":"shape_3387","x":522,"y":77},' + + '{"type":"domainStory:workObjectConversation","name":"seats","id":"shape_7904","x":522,"y":190},' + + '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_8152","x":803,"y":99},' + + '{"type":"domainStory:workObjectInfo","name":"chosen seats","id":"shape_4138","x":1071,"y":164},' + + '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_9422","x":522,"y":283},' + + '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_5209","x":522,"y":390},' + + '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_2043","x":803,"y":264},' + + '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_7902","x":522,"y":475},' + + '{"type":"domainStory:activity","name":"chooses movie from","id":"connection_5202","number":"1","waypoints":[{"original":{"x":252,"y":202},"x":252,"y":164},{"original":{"x":252,"y":-7},"x":252,"y":40}],"source":"shape_9977","target":"shape_3526"},' + + '{"type":"domainStory:connection","name":"","id":"connection_7380","waypoints":[{"original":{"x":252,"y":-7},"x":288,"y":-14},{"original":{"x":366,"y":-29},"x":316,"y":-19}],"source":"shape_3526","target":"shape_1144"},' + + '{"type":"domainStory:activity","name":"asks for","id":"connection_7781","number":"2","waypoints":[{"original":{"x":252,"y":202},"x":277,"y":185},{"original":{"x":560,"y":-7},"x":522,"y":19}],"source":"shape_9977","target":"shape_5151"},' + + '{"type":"domainStory:activity","name":"","id":"connection_3361","number":null,"waypoints":[{"original":{"x":560,"y":-7},"x":602,"y":-7},{"x":697,"y":-7},{"original":{"x":697,"y":215},"x":697,"y":164}],"source":"shape_5151","target":"shape_4658"},' + + '{"type":"domainStory:activity","name":"in","id":"connection_5224","number":null,"waypoints":[{"original":{"x":841,"y":-7},"x":883,"y":-7},{"x":925,"y":-7},{"original":{"x":958,"y":202},"x":952,"y":164}],"source":"shape_8031","target":"shape_6138"},' + + '{"type":"domainStory:activity","name":"looks up","id":"connection_9708","number":3,"waypoints":[{"original":{"x":710,"y":202},"x":718,"y":167},{"x":755,"y":-7},{"original":{"x":809,"y":-7},"x":803,"y":-7}],"source":"shape_4658","target":"shape_8031"},' + + '{"type":"domainStory:activity","name":"shows","id":"connection_2251","number":4,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":180},{"original":{"x":560,"y":115},"x":593,"y":134}],"source":"shape_4658","target":"shape_3387"},' + + '{"type":"domainStory:activity","name":"to","id":"connection_6291","number":null,"waypoints":[{"original":{"x":560,"y":115},"x":522,"y":128},{"original":{"x":248,"y":219},"x":296,"y":203}],"source":"shape_3387","target":"shape_9977"},' + + '{"type":"domainStory:activity","name":"selects","id":"connection_8965","number":5,"waypoints":[{"original":{"x":252,"y":202},"x":294,"y":211},{"x":369,"y":228},{"original":{"x":560,"y":228},"x":522,"y":228}],"source":"shape_9977","target":"shape_7904"},' + + '{"type":"domainStory:activity","name":"","id":"connection_3680","number":null,"waypoints":[{"original":{"x":560,"y":228},"x":597,"y":222},{"original":{"x":713,"y":204},"x":672,"y":210}],"source":"shape_7904","target":"shape_4658"},' + + '{"type":"domainStory:activity","name":"issues","id":"connection_7770","number":6,"waypoints":[{"original":{"x":710,"y":202},"x":738,"y":188},{"original":{"x":841,"y":137},"x":803,"y":156}],"source":"shape_4658","target":"shape_8152"},' + + '{"type":"domainStory:activity","name":"","id":"connection_2904","number":null,"waypoints":[{"original":{"x":841,"y":137},"x":874,"y":156},{"original":{"x":954,"y":201},"x":920,"y":182}],"source":"shape_8152","target":"shape_6138"},' + + '{"type":"domainStory:activity","name":"reserves","id":"connection_8784","number":7,"waypoints":[{"original":{"x":958,"y":202},"x":1000,"y":202},{"original":{"x":1109,"y":202},"x":1071,"y":202}],"source":"shape_6138","target":"shape_4138"},' + + '{"type":"domainStory:activity","name":"tells","id":"connection_6154","number":8,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":232},{"original":{"x":560,"y":321},"x":584,"y":302}],"source":"shape_4658","target":"shape_9422"},' + + '{"type":"domainStory:activity","name":"","id":"connection_6050","number":null,"waypoints":[{"original":{"x":560,"y":321},"x":522,"y":321},{"x":469,"y":321},{"original":{"x":245,"y":216},"x":275,"y":230}],"source":"shape_9422","target":"shape_9977"},' + + '{"type":"domainStory:activity","name":"pays","id":"connection_7890","number":9,"waypoints":[{"original":{"x":252,"y":202},"x":265,"y":241},{"x":328,"y":428},{"original":{"x":560,"y":428},"x":522,"y":428}],"source":"shape_9977","target":"shape_5209"},' + + '{"type":"domainStory:activity","name":"","id":"connection_7262","number":null,"waypoints":[{"original":{"x":560,"y":428},"x":602,"y":428},{"x":661,"y":428},{"original":{"x":699,"y":239},"x":697,"y":249}],"source":"shape_5209","target":"shape_4658"},' + + '{"type":"domainStory:activity","name":"prints","id":"connection_8506","number":10,"waypoints":[{"original":{"x":710,"y":202},"x":739,"y":224},{"original":{"x":841,"y":302},"x":803,"y":273}],"source":"shape_4658","target":"shape_2043"},' + + '{"type":"domainStory:activity","name":"with","id":"connection_0126","number":null,"waypoints":[{"original":{"x":841,"y":302},"x":866,"y":284},{"original":{"x":971,"y":209},"x":920,"y":245}],"source":"shape_2043","target":"shape_6138"},' + + '{"type":"domainStory:activity","name":"hands over","id":"connection_1646","number":"11","waypoints":[{"original":{"x":710,"y":202},"x":710,"y":249},{"x":710,"y":513},{"original":{"x":560,"y":513},"x":603,"y":513}],"source":"shape_4658","target":"shape_7902"},' + + '{"info":"Assumption: no line at box office, seats available, cash payment"},' + + '{"version":"0.5.0"}]'; diff --git a/src/app/modeler/domain-story-modeler/test/spec/numberingSpec.js b/src/app/modeler/domain-story-modeler/test/spec/numberingSpec.js new file mode 100644 index 00000000..20fc7ce7 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/numberingSpec.js @@ -0,0 +1,39 @@ +import { labelPosition } from "../../modeler/labeling/position"; +import { numberBoxDefinitions } from "../../modeler/numbering/numbering"; + +describe("numbering", function () { + it("numberBoxDefinitions", function () { + // Given + const element = { + waypoints: [ + { + original: { + x: 10, + y: 10, + }, + x: 10, + y: 10, + }, + { + original: { + x: 20, + y: 20, + }, + x: 20, + y: 20, + }, + ], + }; + + const position = labelPosition(element.waypoints); + + // When + + const box = numberBoxDefinitions(element); + + // Then + + expect(box.x).toEqual(position.x - 50); + expect(box.y).toEqual(position.y - 19); + }); +}); diff --git a/src/app/modeler/domain-story-modeler/test/spec/positionSpec.js b/src/app/modeler/domain-story-modeler/test/spec/positionSpec.js new file mode 100644 index 00000000..b725273f --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/positionSpec.js @@ -0,0 +1,143 @@ +import { selectPartOfActivity } from "../../modeler/labeling/dsLabelUtil"; +import { + labelPosition, + labelPositionX, + labelPositionY, +} from "../../modeler/labeling/position"; +import { angleBetween } from "../../../../common/util/mathExtensions"; + +describe("position", function () { + it("labelPosition test", function () { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 30, + y: 30, + }; + + const midPoint = { + x: 30, + y: 20, + }; + const waypoints = [startPoint, midPoint, endPoint]; + + let angleActivity = []; + for (let i = 0; i < 3 - 1; i++) { + // calculate the angles of the activity + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + const selectedActivity = selectPartOfActivity(waypoints, angleActivity); + + const xPos = labelPositionX( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + const yPos = labelPositionY( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + + const supposed = { + x: xPos, + y: yPos, + selected: selectedActivity, + }; + + const res = labelPosition(waypoints); + + expect(res).toEqual(supposed); + }); + + it("labelPosition test", function () { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 30, + y: 30, + }; + + const midPoint = { + x: 20, + y: 30, + }; + + const waypoints = [startPoint, midPoint, endPoint]; + + let angleActivity = []; + for (let i = 0; i < 3 - 1; i++) { + // calculate the angles of the activity + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + const selectedActivity = selectPartOfActivity(waypoints, angleActivity); + + const xPos = labelPositionX( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + const yPos = labelPositionY( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + + const supposed = { + x: xPos, + y: yPos, + selected: selectedActivity, + }; + + const res = labelPosition(waypoints); + + expect(res).toEqual(supposed); + }); + + it("labelPosition test", function () { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 30, + y: 30, + }; + + const midPoint = { + x: 15, + y: 15, + }; + + const waypoints = [startPoint, midPoint, endPoint]; + + let angleActivity = []; + for (let i = 0; i < 3 - 1; i++) { + // calculate the angles of the activity + angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]); + } + const selectedActivity = selectPartOfActivity(waypoints, angleActivity); + + const xPos = labelPositionX( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + const yPos = labelPositionY( + waypoints[selectedActivity], + waypoints[selectedActivity + 1] + ); + + const supposed = { + x: xPos, + y: yPos, + selected: selectedActivity, + }; + + const res = labelPosition(waypoints); + + expect(res).toEqual(supposed); + }); +}); diff --git a/src/app/modeler/domain-story-modeler/test/spec/testHelper.js b/src/app/modeler/domain-story-modeler/test/spec/testHelper.js new file mode 100644 index 00000000..47010f15 --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/testHelper.js @@ -0,0 +1,24 @@ +export * from "bpmn-js/test/helper"; + +import { insertCSS } from "bpmn-js/test/helper"; + +insertCSS("diagram-js.css", require("bpmn-js/dist/assets/diagram-js.css")); +insertCSS( + "bpmn-embedded.css", + require("bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css") +); + +insertCSS( + "diagram-js-testing.css", + ".test-container .result { height: 500px; }" + ".test-container > div" +); + +insertCSS( + "custom-modeler-testing.css", + ".icon-custom-triangle {" + + "background: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22%233CAA82%22%20width%3D%22270%22%20height%3D%22240%22%3E%3Cpath%20d%3D%22M8%2C40%20l%2015%2C-27%20l%2015%2C27%20z%22%2F%3E%3C%2Fsvg%3E');" + + "}" + + ".icon-custom-circle {" + + "background: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20stroke-width%3D%228%22%20stroke%3D%22%2348a%22%20fill%3D%22none%22%20viewBox%3D%220%200%20120%20120%22%3E%3Ccircle%20cx%3D%2260%22%20cy%3D%2260%22%20r%3D%2240%22%2F%3E%3C%2Fsvg%3E');" + + "}" +); diff --git a/src/app/modeler/domain-story-modeler/test/spec/test_conf.js b/src/app/modeler/domain-story-modeler/test/spec/test_conf.js new file mode 100644 index 00000000..f4b31b5c --- /dev/null +++ b/src/app/modeler/domain-story-modeler/test/spec/test_conf.js @@ -0,0 +1,4 @@ +export const test_conf = { + actors: ["Person"], + workObjects: [], +}; diff --git a/src/app/modeler/service/initializer.service.spec.ts b/src/app/modeler/service/initializer.service.spec.ts new file mode 100644 index 00000000..8d3c7130 --- /dev/null +++ b/src/app/modeler/service/initializer.service.spec.ts @@ -0,0 +1,66 @@ +import { TestBed } from '@angular/core/testing'; + +import { InitializerService } from './initializer.service'; +import { DirtyFlagService } from '../../dirtyFlag-service/dirty-flag.service'; +import { IconDictionaryService } from '../../domain-configuration/service/icon-dictionary.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { LabelDictionaryService } from '../../label-dictionary/service/label-dictionary.service'; +import { ReplayStateService } from '../../replay-service/replay-state.service'; +import { DialogService } from '../../dialog/service/dialog.service'; +import { TitleService } from '../../titleAndDescription/service/title.service'; +import { MassNamingService } from '../../label-dictionary/service/mass-naming.service'; +import { HtmlPresentationService } from '../../export/service/html-presentation.service'; +import { MockService } from 'ng-mocks'; + +describe('InitializerService', () => { + let service: InitializerService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { + provide: DirtyFlagService, + }, + { + provide: IconDictionaryService, + useValue: MockService(IconDictionaryService), + }, + { + provide: ElementRegistryService, + useValue: MockService(ElementRegistryService), + }, + { + provide: DomainConfigurationService, + useValue: MockService(DomainConfigurationService), + }, + { + provide: LabelDictionaryService, + useValue: MockService(LabelDictionaryService), + }, + { + provide: DialogService, + useValue: MockService(DialogService), + }, + { + provide: HtmlPresentationService, + useValue: MockService(HtmlPresentationService), + }, + { + provide: MassNamingService, + useValue: MockService(MassNamingService), + }, + { + provide: ReplayStateService, + useValue: MockService(ReplayStateService), + }, + TitleService, + ], + }); + service = TestBed.inject(InitializerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/modeler/service/initializer.service.ts b/src/app/modeler/service/initializer.service.ts new file mode 100644 index 00000000..f5ee092b --- /dev/null +++ b/src/app/modeler/service/initializer.service.ts @@ -0,0 +1,295 @@ +import { Injectable } from '@angular/core'; + +import { initializeContextPadProvider } from '../domain-story-modeler/modeler/context-pad/domainStoryContextPadProvider'; +import { + getMultipleNumberRegistry, + getNumberRegistry, + initializeNumbering, + setNumberIsMultiple, + updateExistingNumbersAtEditing, +} from '../domain-story-modeler/modeler/numbering/numbering'; +import dsActivityHandlers, { + initializeDSActivityHandler, +} from '../domain-story-modeler/modeler/updateHandler/dsActivityHandlers'; +import { initializePalette } from '../domain-story-modeler/modeler/palette/domainStoryPalette'; +import { initializeRenderer } from '../domain-story-modeler/modeler/domainStoryRenderer'; +import { + initializeLabelEditingProvider, + toggleStashUse, +} from '../domain-story-modeler/modeler/labeling/dsLabelEditingProvider'; +import { initializeReplaceOptions } from '../domain-story-modeler/modeler/change-icon/replaceOptions'; + +import { DirtyFlagService } from '../../dirtyFlag-service/dirty-flag.service'; +import { IconDictionaryService } from '../../domain-configuration/service/icon-dictionary.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { LabelDictionaryService } from '../../label-dictionary/service/label-dictionary.service'; +import { elementTypes } from '../../common/domain/elementTypes'; +import { ReplayStateService } from '../../replay-service/replay-state.service'; +import { MatDialogConfig } from '@angular/material/dialog'; +import { ActivityDialogData } from '../component/activity-dialog/activityDialogData'; +import { ActivityDialogComponent } from '../component/activity-dialog/activity-dialog.component'; +import { DialogService } from '../../dialog/service/dialog.service'; +import dsMassRenameHandlers from '../domain-story-modeler/modeler/updateHandler/dsMassRenameHandlers'; +import dsElementHandler from '../domain-story-modeler/modeler/updateHandler/dsElementHandler'; +import headlineAndDescriptionUpdateHandler from '../domain-story-modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler'; +import { TitleService } from '../../titleAndDescription/service/title.service'; +import { MassNamingService } from '../../label-dictionary/service/mass-naming.service'; +import { ActivityCanvasObject } from '../../common/domain/activityCanvasObject'; +import { HtmlPresentationService } from '../../export/service/html-presentation.service'; +import { positionsMatch } from '../../common/util/mathExtensions'; + +@Injectable({ + providedIn: 'root', +}) +export class InitializerService { + constructor( + private dirtyFlagService: DirtyFlagService, + private iconDictionaryService: IconDictionaryService, + private elementRegistryService: ElementRegistryService, + private configurationService: DomainConfigurationService, + private labelDictionaryService: LabelDictionaryService, + private replayStateService: ReplayStateService, + private dialogService: DialogService, + private titleService: TitleService, + private massNamingService: MassNamingService, + private htmlPresentationService: HtmlPresentationService + ) {} + + public initializeModelerClasses(): void { + initializeContextPadProvider( + this.dirtyFlagService, + this.iconDictionaryService + ); + initializeNumbering(this.elementRegistryService); + initializeDSActivityHandler(this.elementRegistryService); + initializePalette(this.iconDictionaryService, this.configurationService); + initializeRenderer( + this.iconDictionaryService, + this.elementRegistryService, + this.dirtyFlagService + ); + initializeLabelEditingProvider(this.labelDictionaryService); + initializeReplaceOptions(this.iconDictionaryService); + } + + public initializeServices( + commandStack: any, + elementRegistry: any, + canvas: any, + selection: any, + modeler: any + ): void { + this.titleService.setCommandStack(commandStack); + this.massNamingService.setCommandStack(commandStack); + this.elementRegistryService.init(elementRegistry); + this.htmlPresentationService.initialize(canvas, selection, modeler); + } + + public initializeHandlers(commandStack: any, eventBus: any): void { + dsActivityHandlers(commandStack, eventBus); + dsMassRenameHandlers(commandStack, eventBus); + dsElementHandler(commandStack, eventBus); + headlineAndDescriptionUpdateHandler(commandStack, this.titleService); + } + + public initiateEventBusListeners(eventBus: any, commandStack: any): void { + eventBus.on('element.dblclick', (e: any) => { + if (!this.replayStateService.getReplayOn()) { + const element = e.element; + if (element.type === elementTypes.ACTIVITY) { + this.activityDoubleClick(element, eventBus, commandStack); + } else { + const renderedNumberRegistry = getNumberRegistry(); + + if (renderedNumberRegistry.length > 1) { + const allActivities = + this.elementRegistryService.getActivitiesFromActors(); + + if (allActivities.length > 0) { + const htmlCanvas = document.getElementById('canvas'); + const container = + // @ts-ignore + htmlCanvas.getElementsByClassName('djs-container'); + const svgElements = container[0].getElementsByTagName('svg'); + const outerSVGElement = svgElements[0]; + const viewport = + outerSVGElement.getElementsByClassName('viewport')[0]; + let transform = viewport.getAttribute('transform'); + let transformX = 0; + let transformY = 0; + let zoomX = 1; + let zoomY = 1; + let nums; + + const clickX = e.originalEvent.offsetX; + const clickY = e.originalEvent.offsetY; + + if (transform) { + transform = transform.replace('matrix(', ''); + transform.replace(')', ''); + nums = transform.split(','); + zoomX = parseFloat(nums[0]); + zoomY = parseFloat(nums[3]); + transformX = parseInt(nums[4], undefined); + transformY = parseInt(nums[5], undefined); + } + + const width = 25 * zoomX; + const height = 22 * zoomY; + for (let i = 1; i < renderedNumberRegistry.length; i++) { + const currentNum = renderedNumberRegistry[i]; + if (currentNum) { + const tspan = currentNum.getElementsByTagName('tspan')[0]; + const tx = tspan.getAttribute('x'); + const ty = tspan.getAttribute('y'); + const tNumber = parseInt(tspan.innerHTML, undefined); + + const elementX = tx * zoomX + (transformX - 5 * zoomX); + const elementY = ty * zoomY + (transformY - 15 * zoomY); + + allActivities.forEach((activity: ActivityCanvasObject) => { + const activityNumber = activity.businessObject.number; + if (activityNumber === tNumber) { + if ( + positionsMatch( + width, + height, + elementX, + elementY, + clickX, + clickY + ) + ) { + this.activityDoubleClick( + activity, + eventBus, + commandStack + ); + } + } + }); + } + } + } + } + } + } + }); + + // when in replay, do not allow any interaction on the canvas + eventBus.on( + [ + 'element.click', + 'element.dblclick', + 'element.mousedown', + 'drag.init', + 'canvas.viewbox.changing', + 'autoPlace', + 'popupMenu.open', + ], + 10000000000, + (event: any) => { + if (this.replayStateService.getReplayOn()) { + event.stopPropagation(); + event.preventDefault(); + } + } + ); + } + + private activityDoubleClick( + activity: ActivityCanvasObject, + eventBus: any, + commandStack: any + ): void { + const source = activity.source; + + // ensure the right number when changing the direction of an activity + toggleStashUse(false); + + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + + if ( + activity.businessObject.number && + source && + source.type.includes(elementTypes.ACTOR) + ) { + config.data = new ActivityDialogData( + activity, + getMultipleNumberRegistry()[activity.businessObject.number], + true, + (data: any) => this.saveActivityInputLabel(data, eventBus, commandStack) + ); + } else if (source && source.type.includes(elementTypes.WORKOBJECT)) { + config.data = new ActivityDialogData( + activity, + false, + false, + (activityData: any) => + this.saveActivityInputLabel(activityData, eventBus, commandStack) + ); + } + this.dialogService.openDialog(ActivityDialogComponent, config); + } + + private saveActivityInputLabel( + activityData: any, + eventBus: any, + commandStack: any + ): void { + const label = activityData.activityLabel; + const hasNumber = activityData.multipleNumbers !== undefined; + const activityNumber = activityData.activityNumber; + const multipleNumberAllowed = activityData.multipleNumbers; + const element = activityData.activity; + + // this.labelDictionaryService.addLabelToDictionary(label); + + const activitiesFromActors = + this.elementRegistryService.getActivitiesFromActors(); + const index = activitiesFromActors.indexOf(element); + + activitiesFromActors.splice(index, 1); + if (hasNumber) { + setNumberIsMultiple(activityNumber, multipleNumberAllowed); + } + element.businessObject.multipleNumberAllowed = multipleNumberAllowed; + + let options: any; + if (hasNumber) { + options = { + businessObject: element.businessObject, + newLabel: label, + newNumber: activityNumber, + element, + }; + } else { + options = { + businessObject: element.businessObject, + newLabel: label, + element, + }; + } + + commandStack.execute('activity.changed', options); + if (element.businessObject.multipleNumberAllowed !== false) { + if (getMultipleNumberRegistry()[activityNumber] === false) { + updateExistingNumbersAtEditing( + activitiesFromActors, + activityNumber, + eventBus + ); + } + } else if (element.businessObject.multipleNumberAllowed === false) { + updateExistingNumbersAtEditing( + activitiesFromActors, + activityNumber, + eventBus + ); + } + this.labelDictionaryService.cleanDictionaries(); + } +} diff --git a/src/app/modeler/service/modeler.service.spec.ts b/src/app/modeler/service/modeler.service.spec.ts new file mode 100644 index 00000000..6ab67549 --- /dev/null +++ b/src/app/modeler/service/modeler.service.spec.ts @@ -0,0 +1,40 @@ +import { TestBed } from '@angular/core/testing'; + +import { ModelerService } from 'src/app/modeler/service/modeler.service'; +import { InitializerService } from './initializer.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { IconDictionaryService } from '../../domain-configuration/service/icon-dictionary.service'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { MockService } from 'ng-mocks'; + +describe('ModelerService', () => { + let service: ModelerService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { + provide: InitializerService, + useValue: MockService(InitializerService), + }, + { + provide: ElementRegistryService, + useValue: MockService(ElementRegistryService), + }, + { + provide: IconDictionaryService, + useValue: MockService(IconDictionaryService), + }, + { + provide: DomainConfigurationService, + useValue: MockService(DomainConfigurationService), + }, + ], + }); + service = TestBed.inject(ModelerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/modeler/service/modeler.service.ts b/src/app/modeler/service/modeler.service.ts new file mode 100644 index 00000000..0699b10d --- /dev/null +++ b/src/app/modeler/service/modeler.service.ts @@ -0,0 +1,148 @@ +import { Injectable } from '@angular/core'; +import { assign } from 'min-dash'; +import DomainStoryModeler from 'src/app/modeler/domain-story-modeler'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { InitializerService } from './initializer.service'; +import { ElementRegistryService } from '../../elementRegistry-service/element-registry.service'; +import { IconDictionaryService } from '../../domain-configuration/service/icon-dictionary.service'; +import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; +import { BusinessObject } from '../../common/domain/businessObject'; +import { config } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class ModelerService { + constructor( + private initialiserService: InitializerService, + private elementRegistryService: ElementRegistryService, + private iconDictionaryService: IconDictionaryService, + private domainConfigurationService: DomainConfigurationService + ) {} + + private modeler: any; + private canvas: any; + private elementRegistry: any; + private commandStack: any; + private selection: any; + private eventBus: any; + + private encoded: string | undefined; + + public restart( + domainConfiguration?: DomainConfiguration | undefined, + domainStory?: BusinessObject[] + ): void { + const currentStory = + domainStory || + this.elementRegistryService.createObjectListForDSTDownload(); + + if (domainConfiguration) { + // TODO über event? + this.iconDictionaryService.setCusomtConfiguration(domainConfiguration); + // TODO über event? + this.domainConfigurationService.loadConfiguration(domainConfiguration); + } + + this.elementRegistryService.clear(); + this.modeler.destroy(); + this.postInit(); + if (currentStory) { + this.getModeler().importCustomElements(currentStory); + } + } + + public postInit(): void { + this.initialiserService.initializeModelerClasses(); + this.modeler = new DomainStoryModeler({ + container: '#canvas', + keyboard: { + bindTo: document, + }, + + // Disable BPMN-SearchModule and re-enable browser Search + additionalModules: [ + { + bpmnSearch: ['value', 'foo'], + }, + ], + }); + + this.canvas = this.modeler.get('canvas'); + this.elementRegistry = this.modeler.get('elementRegistry'); + this.eventBus = this.modeler.get('eventBus'); + this.commandStack = this.modeler.get('commandStack'); + this.selection = this.modeler.get('selection'); + + this.initialiserService.initializeHandlers( + this.commandStack, + this.eventBus + ); + this.initialiserService.initializeServices( + this.commandStack, + this.elementRegistry, + this.canvas, + this.selection, + this.modeler + ); + + const exportArtifacts = this.debounce(this.saveSVG, 500); + this.modeler.on('commandStack.changed', exportArtifacts); + + this.initialiserService.initiateEventBusListeners( + this.eventBus, + this.commandStack + ); + + this.modeler.createDiagram(); + // expose bpmnjs to window for debugging purposes + assign(window, { bpmnjs: this.modeler }); + + this.startDebounce(); + } + + public startDebounce(): void { + this.debounce(this.saveSVG, 500); + } + + public commandStackChanged(): void { + // to update the title of the svg, we need to tell the command stack, that a value has changed + this.eventBus.fire( + 'commandStack.changed', + this.debounce(this.saveSVG, 500) + ); + } + + public debounce(fn: any, timeout: number): any { + return () => { + let timer; + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(() => { + // tslint:disable-next-line:no-unused-expression + fn(this.modeler).then((svg: string) => { + this.encoded = svg; + }) as Promise; + }, timeout); + }; + } + + public getEncoded(): string { + return this.encoded ? this.encoded : ''; + } + + // SVG functions + async saveSVG(modeler: any): Promise { + try { + const result = await modeler.saveSVG(); + return result.svg; + } catch (err) { + alert('There was an error saving the SVG.\n' + err); + } + } + + public getModeler(): any { + return this.modeler; + } +} diff --git a/src/app/renderer-service/renderer.service.spec.ts b/src/app/renderer-service/renderer.service.spec.ts new file mode 100644 index 00000000..bfab2ba2 --- /dev/null +++ b/src/app/renderer-service/renderer.service.spec.ts @@ -0,0 +1,160 @@ +import { TestBed } from '@angular/core/testing'; +import { RendererService } from './renderer.service'; +import { ModelerService } from '../modeler/service/modeler.service'; +import { ElementRegistryService } from '../elementRegistry-service/element-registry.service'; +import { DomainConfigurationService } from '../domain-configuration/service/domain-configuration.service'; +import { DirtyFlagService } from '../dirtyFlag-service/dirty-flag.service'; +import { DomainConfiguration } from '../common/domain/domainConfiguration'; + +describe('RendererService', () => { + let service: RendererService; + + let modelerServiceSpy: jasmine.SpyObj; + let elementRegistryServiceSpy: jasmine.SpyObj; + let domainConfigurationServiceSpy: jasmine.SpyObj; + let dirtyFlagServiceSpy: jasmine.SpyObj; + + beforeEach(() => { + const modelerServiceMock = jasmine.createSpyObj('ModelerService', [ + 'getModeler', + 'restart', + 'commandStackChanged', + 'startDebounce', + ]); + const elementRegistryServiceMock = jasmine.createSpyObj( + 'ElementRegistryService', + ['correctInitialize', 'createObjectListForDSTDownload'] + ); + const dirtyFlagServiceMock = jasmine.createSpyObj('DirtyFlagService', [ + 'makeClean', + ]); + const domainConfigurationServiceMock = jasmine.createSpyObj( + 'DomainConfigurationService', + ['getNewIconConfiguration'] + ); + + TestBed.configureTestingModule({ + providers: [ + { + provide: ModelerService, + useValue: modelerServiceMock, + }, + { + provide: ElementRegistryService, + useValue: elementRegistryServiceMock, + }, + { + provide: DirtyFlagService, + useValue: dirtyFlagServiceMock, + }, + { + provide: DomainConfigurationService, + useValue: domainConfigurationServiceMock, + }, + ], + }); + modelerServiceSpy = TestBed.inject( + ModelerService + ) as jasmine.SpyObj; + elementRegistryServiceSpy = TestBed.inject( + ElementRegistryService + ) as jasmine.SpyObj; + domainConfigurationServiceSpy = TestBed.inject( + DomainConfigurationService + ) as jasmine.SpyObj; + dirtyFlagServiceSpy = TestBed.inject( + DirtyFlagService + ) as jasmine.SpyObj; + service = TestBed.inject(RendererService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + describe('renderStory', () => { + beforeEach(() => { + modelerServiceSpy.getModeler.and.returnValue({ + importCustomElements: (story: any) => {}, + }); + }); + + it('should call modelerService', () => { + service.renderStory([]); + expect(modelerServiceSpy.getModeler).toHaveBeenCalled(); + }); + }); + + describe('importStory', () => { + const domainConfig: DomainConfiguration = { + name: 'test', + actors: {}, + workObjects: {}, + }; + + beforeEach(() => { + modelerServiceSpy.getModeler.and.returnValue({ + importCustomElements: (story: any) => {}, + }); + modelerServiceSpy.restart.and.returnValue(); + elementRegistryServiceSpy.correctInitialize.and.returnValue(); + modelerServiceSpy.commandStackChanged.and.returnValue(); + modelerServiceSpy.startDebounce.and.returnValue(); + dirtyFlagServiceSpy.makeClean.and.returnValue(); + }); + + it('should call correct functions - configHasChanged and makeClean', () => { + service.importStory([], true, domainConfig); + + expect(modelerServiceSpy.restart).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.correctInitialize).toHaveBeenCalledTimes( + 0 + ); + expect(modelerServiceSpy.commandStackChanged).toHaveBeenCalledTimes(0); + expect(modelerServiceSpy.startDebounce).toHaveBeenCalledTimes(0); + expect(dirtyFlagServiceSpy.makeClean).toHaveBeenCalled(); + }); + + it('should call correct functions - configHasChanged and not makeClean', () => { + service.importStory([], true, domainConfig, false); + + expect(modelerServiceSpy.getModeler).toHaveBeenCalled(); + expect( + domainConfigurationServiceSpy.getNewIconConfiguration + ).toHaveBeenCalled(); + expect(modelerServiceSpy.restart).toHaveBeenCalled(); + expect(elementRegistryServiceSpy.correctInitialize).toHaveBeenCalledTimes( + 0 + ); + expect(modelerServiceSpy.commandStackChanged).toHaveBeenCalledTimes(0); + expect(modelerServiceSpy.startDebounce).toHaveBeenCalledTimes(0); + expect(dirtyFlagServiceSpy.makeClean).toHaveBeenCalledTimes(0); + }); + + it('should call correct functions - not configHasChanged and makeClean', () => { + service.importStory([], false); + + expect(modelerServiceSpy.getModeler).toHaveBeenCalled(); + expect( + domainConfigurationServiceSpy.getNewIconConfiguration + ).toHaveBeenCalledTimes(0); + expect(modelerServiceSpy.restart).toHaveBeenCalledTimes(0); + expect(elementRegistryServiceSpy.correctInitialize).toHaveBeenCalled(); + expect(modelerServiceSpy.commandStackChanged).toHaveBeenCalled(); + expect(modelerServiceSpy.startDebounce).toHaveBeenCalled(); + expect(dirtyFlagServiceSpy.makeClean).toHaveBeenCalled(); + }); + }); + + describe('getStory', () => { + it('should call createObjectListForDSTDownload', () => { + elementRegistryServiceSpy.createObjectListForDSTDownload.and.returnValue( + [] + ); + service.getStory(); + expect( + elementRegistryServiceSpy.createObjectListForDSTDownload + ).toHaveBeenCalled(); + }); + }); +}); diff --git a/src/app/renderer-service/renderer.service.ts b/src/app/renderer-service/renderer.service.ts new file mode 100644 index 00000000..6ea6f9b7 --- /dev/null +++ b/src/app/renderer-service/renderer.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import { ModelerService } from 'src/app/modeler/service/modeler.service'; +import { BusinessObject } from 'src/app/common/domain/businessObject'; +import { ElementRegistryService } from 'src/app/elementRegistry-service/element-registry.service'; +import { DirtyFlagService } from 'src/app/dirtyFlag-service/dirty-flag.service'; +import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; + +@Injectable({ + providedIn: 'root', +}) +export class RendererService { + constructor( + private modelerService: ModelerService, + private elementRegistryService: ElementRegistryService, + private dirtyFlagService: DirtyFlagService, + private configurationService: DomainConfigurationService + ) {} + + public renderStory(domainStory: BusinessObject[]): void { + this.modelerService.getModeler().importCustomElements(domainStory); + } + + public importStory( + domainStory: BusinessObject[], + configurationChange: boolean, + config?: DomainConfiguration, + makeClean = true + ): void { + if (configurationChange) { + this.modelerService.restart(config, domainStory); + } else { + this.renderStory(domainStory); + + this.elementRegistryService.correctInitialize(); + + this.modelerService.commandStackChanged(); + this.modelerService.startDebounce(); + } + if (makeClean) { + this.dirtyFlagService.makeClean(); + } + } + + public getStory(): BusinessObject[] { + return this.elementRegistryService.createObjectListForDSTDownload(); + } +} diff --git a/src/app/replay-service/replay-state.service.spec.ts b/src/app/replay-service/replay-state.service.spec.ts new file mode 100644 index 00000000..1f7ca003 --- /dev/null +++ b/src/app/replay-service/replay-state.service.spec.ts @@ -0,0 +1,31 @@ +import { TestBed } from '@angular/core/testing'; + +import { ReplayStateService } from 'src/app/replay-service/replay-state.service'; + +describe('ReplayStateService', () => { + let service: ReplayStateService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ReplayStateService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should return value', () => { + expect(service.getReplayOn()).toBeFalse(); + }); + + it('should return Observable', () => { + service + .getReplayOnObservable() + .subscribe((value) => expect(value).toBeFalse()); + }); + + it('should set value', () => { + service.setReplayState(true); + expect(service.getReplayOn()).toBeTrue(); + }); +}); diff --git a/src/app/replay-service/replay-state.service.ts b/src/app/replay-service/replay-state.service.ts new file mode 100644 index 00000000..c7681fdb --- /dev/null +++ b/src/app/replay-service/replay-state.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class ReplayStateService { + private replayOnSubject = new BehaviorSubject(false); + + constructor() {} + + public setReplayState(state: boolean): void { + this.replayOnSubject.next(state); + } + + public getReplayOn(): boolean { + return this.replayOnSubject.getValue(); + } + + public getReplayOnObservable(): Observable { + return this.replayOnSubject.asObservable(); + } +} diff --git a/src/app/replay-service/replay.service.spec.ts b/src/app/replay-service/replay.service.spec.ts new file mode 100644 index 00000000..e3c9f551 --- /dev/null +++ b/src/app/replay-service/replay.service.spec.ts @@ -0,0 +1,259 @@ +import { TestBed } from '@angular/core/testing'; + +import { ReplayService } from 'src/app/replay-service/replay.service'; +import { ReplayStateService } from './replay-state.service'; +import { DomManipulationService } from '../domManipulation/service/dom-manipulation.service'; +import { DialogService } from '../dialog/service/dialog.service'; +import { StoryCreatorService } from '../storyCreator-service/story-creator.service'; +import { MockService } from 'ng-mocks'; +import { preBuildTestStory } from '../spec/testHelpers.spec'; + +describe('ReplayService', () => { + let service: ReplayService; + + let storyCreatorServiceSpy: jasmine.SpyObj; + let domManipulationServiceSpy: jasmine.SpyObj; + let dialogServiceSpy: jasmine.SpyObj; + let replayStateServiceSpy: jasmine.SpyObj; + + beforeEach(() => { + const storyCreatorServiceMock = jasmine.createSpyObj( + 'StoryCreatorService', + ['traceActivitiesAndCreateStory', 'isStoryConsecutivelyNumbered'] + ); + const domManipulationServiceMock = jasmine.createSpyObj( + 'DomManipulationService', + ['showStep', 'showAll'] + ); + const dialogServiceMock = jasmine.createSpyObj('dialogService', [ + 'openDialog', + ]); + const replayStateServiceMock = jasmine.createSpyObj('replayState', [ + 'setReplayState', + ]); + TestBed.configureTestingModule({ + providers: [ + { + provide: ReplayStateService, + useValue: replayStateServiceMock, + }, + { + provide: DomManipulationService, + useValue: domManipulationServiceMock, + }, + { + provide: DialogService, + useValue: dialogServiceMock, + }, + { + provide: StoryCreatorService, + useValue: storyCreatorServiceMock, + }, + ], + }); + service = TestBed.inject(ReplayService); + + storyCreatorServiceSpy = TestBed.inject( + StoryCreatorService + ) as jasmine.SpyObj; + domManipulationServiceSpy = TestBed.inject( + DomManipulationService + ) as jasmine.SpyObj; + dialogServiceSpy = TestBed.inject( + DialogService + ) as jasmine.SpyObj; + replayStateServiceSpy = TestBed.inject( + ReplayStateService + ) as jasmine.SpyObj; + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should return initial currentStepNumber', () => { + service + .getCurrentStepNumberObservable() + .subscribe((value) => expect(value).toEqual(-1)); + }); + + it('should return initial maxStepNumber', () => { + service + .getMaxStepNumberObservable() + .subscribe((value) => expect(value).toEqual(0)); + }); + + describe('initializeReplay', () => { + beforeEach(() => { + storyCreatorServiceSpy.traceActivitiesAndCreateStory.and.returnValue( + preBuildTestStory(1) + ); + }); + + it('should initialize Replay', () => { + service.initializeReplay(); + + service + .getCurrentStepNumberObservable() + .subscribe((value) => expect(value).toEqual(1)); + service + .getMaxStepNumberObservable() + .subscribe((value) => expect(value).toEqual(1)); + expect( + storyCreatorServiceSpy.traceActivitiesAndCreateStory + ).toHaveBeenCalled(); + }); + }); + + describe('should step through', () => { + beforeEach(() => { + storyCreatorServiceSpy.traceActivitiesAndCreateStory.and.returnValue( + preBuildTestStory(2) + ); + domManipulationServiceSpy.showStep.and.returnValue(); + }); + + describe('nextStep ', () => { + it('should not select next step when no story', () => { + service.nextStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(-1); + }); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalledTimes(0); + }); + + it('should select next step', () => { + service.initializeReplay(); + service.nextStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(2); + }); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalled(); + }); + + it('should not select next step when last step', () => { + service.initializeReplay(); + service.nextStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(2); + }); + service.nextStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(2); + }); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalledTimes(1); + }); + }); + + describe('previousStep', () => { + it('should not select previous step when no story', () => { + service.previousStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(-1); + }); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalledTimes(0); + }); + + it('should select previous step', () => { + service.initializeReplay(); + service.nextStep(); + + service.previousStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(1); + }); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalled(); + }); + + it('should not select previous step when first step', () => { + service.initializeReplay(); + service.previousStep(); + + service.getCurrentStepNumberObservable().subscribe((value) => { + expect(value).toEqual(1); + }); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalledTimes(0); + }); + }); + + describe('startReplay', () => { + beforeEach(() => { + storyCreatorServiceSpy.traceActivitiesAndCreateStory.and.returnValue( + preBuildTestStory(1) + ); + domManipulationServiceSpy.showStep.and.returnValue(); + dialogServiceSpy.openDialog.and.returnValue(); + replayStateServiceSpy.setReplayState.and.returnValue(); + }); + + it('should show dialog if not consecutively numbered', () => { + storyCreatorServiceSpy.isStoryConsecutivelyNumbered.and.returnValue( + false + ); + + service.startReplay(); + + expect( + storyCreatorServiceSpy.isStoryConsecutivelyNumbered + ).toHaveBeenCalled(); + expect(dialogServiceSpy.openDialog).toHaveBeenCalled(); + }); + + it(' should start replay if consecutively numbered', () => { + storyCreatorServiceSpy.isStoryConsecutivelyNumbered.and.returnValue( + true + ); + + service.startReplay(); + + expect( + storyCreatorServiceSpy.isStoryConsecutivelyNumbered + ).toHaveBeenCalled(); + expect(replayStateServiceSpy.setReplayState).toHaveBeenCalledOnceWith( + true + ); + expect(domManipulationServiceSpy.showStep).toHaveBeenCalled(); + }); + }); + + describe('stopReplay', () => { + beforeEach(() => { + dialogServiceSpy.openDialog.and.returnValue(); + replayStateServiceSpy.setReplayState.and.returnValue(); + storyCreatorServiceSpy.traceActivitiesAndCreateStory.and.returnValue( + preBuildTestStory(1) + ); + domManipulationServiceSpy.showStep.and.returnValue(); + replayStateServiceSpy.setReplayState.and.returnValue(); + storyCreatorServiceSpy.isStoryConsecutivelyNumbered.and.returnValue( + true + ); + + service.startReplay(); + }); + + it('should call methods', () => { + service.stopReplay(); + + service + .getCurrentStepNumberObservable() + .subscribe((value) => expect(value).toEqual(-1)); + service + .getMaxStepNumberObservable() + .subscribe((value) => expect(value).toEqual(0)); + + expect(replayStateServiceSpy.setReplayState).toHaveBeenCalledWith(true); + expect(replayStateServiceSpy.setReplayState).toHaveBeenCalledWith( + false + ); + expect(domManipulationServiceSpy.showAll).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/src/app/replay-service/replay.service.ts b/src/app/replay-service/replay.service.ts new file mode 100644 index 00000000..d457c25b --- /dev/null +++ b/src/app/replay-service/replay.service.ts @@ -0,0 +1,104 @@ +import { Injectable } from '@angular/core'; +import { ReplayStateService } from 'src/app/replay-service/replay-state.service'; +import { DomManipulationService } from 'src/app/domManipulation/service/dom-manipulation.service'; +import { DialogService } from 'src/app/dialog/service/dialog.service'; +import { InfoDialogComponent } from 'src/app/dialog/component/confirm-dialog/info-dialog.component'; +import { MatDialogConfig } from '@angular/material/dialog'; +import { InfoDialogData } from 'src/app/dialog/component/confirm-dialog/infoDialogData'; +import { StoryStep } from 'src/app/storyCreator-service/domain/storyStep'; +import { StoryCreatorService } from '../storyCreator-service/story-creator.service'; +import { BehaviorSubject, Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class ReplayService { + private story: StoryStep[] = []; + private currentStep = new BehaviorSubject(-1); + private maxStepNumber = new BehaviorSubject(0); + + constructor( + private replayStateService: ReplayStateService, + private domManipulationService: DomManipulationService, + private dialogService: DialogService, + private storyCreatorService: StoryCreatorService + ) {} + + public getCurrentStepNumberObservable(): Observable { + return this.currentStep.asObservable(); + } + + public getMaxStepNumberObservable(): Observable { + return this.maxStepNumber.asObservable(); + } + + public getCurrentStepNumber(): number { + return this.currentStep.getValue(); + } + + public getMaxStepNumber(): number { + return this.maxStepNumber.getValue(); + } + + public initializeReplay(): void { + this.currentStep.next(1); + this.story = this.storyCreatorService.traceActivitiesAndCreateStory(); + this.maxStepNumber.next(this.story.length); + } + + public nextStep(): void { + if ( + this.story.length > 0 && + this.story.length > this.currentStep.getValue() + ) { + this.currentStep.next(this.currentStep.getValue() + 1); + this.domManipulationService.showStep( + this.story[this.currentStep.getValue() - 1], + this.currentStep.getValue() > 0 + ? this.story[this.currentStep.getValue() - 2] + : undefined + ); + } + } + + public previousStep(): void { + if (this.currentStep.getValue() > 1) { + this.currentStep.next(this.currentStep.getValue() - 1); + this.domManipulationService.showStep( + this.story[this.currentStep.getValue() - 1], + this.currentStep.getValue() > 0 + ? this.story[this.currentStep.getValue() - 2] + : undefined + ); + } + } + + public startReplay(): void { + this.initializeReplay(); + if (this.storyCreatorService.isStoryConsecutivelyNumbered(this.story)) { + this.replayStateService.setReplayState(true); + this.domManipulationService.showStep( + this.story[this.currentStep.getValue() - 1] + ); + } else { + const title = 'Replay Error'; + const text = + 'The Domain Story is not complete.\n' + 'At least one Step is missing.'; + + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + + config.data = new InfoDialogData(title, text, true); + + this.dialogService.openDialog(InfoDialogComponent, config); + } + } + + public stopReplay(): void { + this.currentStep.next(-1); + this.maxStepNumber.next(0); + this.replayStateService.setReplayState(false); + this.domManipulationService.showAll(); + } +} diff --git a/src/app/settings-module/component/settings.component.html b/src/app/settings-module/component/settings.component.html new file mode 100644 index 00000000..8ff29751 --- /dev/null +++ b/src/app/settings-module/component/settings.component.html @@ -0,0 +1,32 @@ +
+
+ +
+ + +
+ + + + + + + + + + + + +
diff --git a/src/app/settings-module/component/settings.component.scss b/src/app/settings-module/component/settings.component.scss new file mode 100644 index 00000000..5e368083 --- /dev/null +++ b/src/app/settings-module/component/settings.component.scss @@ -0,0 +1,21 @@ +.settings { + display: grid; + grid-template-rows: 40px auto; + width: 100%; +} + +.materialIconButton { + font-size: 12pt; +} + +.header { + display: grid; + color: #666666; + border-bottom: darkgrey 1px solid; + grid-template-columns: 150px auto 250px 250px; +} + +::ng-deep.mat-tab-label, +::ng-deep.mat-tab-label-active { + height: 30px !important; +} diff --git a/src/app/settings-module/component/settings.component.spec.ts b/src/app/settings-module/component/settings.component.spec.ts new file mode 100644 index 00000000..472e974f --- /dev/null +++ b/src/app/settings-module/component/settings.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SettingsComponent } from 'src/app/settings-module/component/settings.component'; +import { SettingsService } from '../service/settings.service'; +import { MockService } from 'ng-mocks'; +import { ModelerService } from '../../modeler/service/modeler.service'; + +describe('SettingsComponent', () => { + let component: SettingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SettingsComponent], + providers: [ + { + provide: SettingsService, + useValue: MockService(SettingsService), + }, + { + provide: ModelerService, + useValue: MockService(ModelerService), + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SettingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/settings-module/component/settings.component.ts b/src/app/settings-module/component/settings.component.ts new file mode 100644 index 00000000..33400b85 --- /dev/null +++ b/src/app/settings-module/component/settings.component.ts @@ -0,0 +1,51 @@ +import { Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { SettingsService } from 'src/app/settings-module/service/settings.service'; +import { ModelerService } from 'src/app/modeler/service/modeler.service'; +import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { Observable } from 'rxjs'; +import { AutosaveStateService } from '../../autosave/service/autosave-state.service'; + +@Component({ + selector: 'app-settings', + templateUrl: './settings.component.html', + styleUrls: ['./settings.component.scss'], +}) +export class SettingsComponent implements OnInit { + configurationChanged = false; + domainConfiguration: DomainConfiguration | undefined; + autosaveEnable: Observable; + + @Output() + emitIconConfigurationExport = new EventEmitter(); + @Output() + emitIconConfigurationImport = new EventEmitter(); + + constructor( + private settingsService: SettingsService, + private modelerService: ModelerService, + private autosaveStateService: AutosaveStateService + ) { + this.autosaveEnable = autosaveStateService.getAutosaveStateAsObservable(); + } + + ngOnInit(): void {} + + setDomainConfiguration(domainConfiguration: DomainConfiguration): void { + this.domainConfiguration = domainConfiguration; + } + + close(): void { + if (this.configurationChanged) { + this.modelerService.restart(this.domainConfiguration); + } + this.settingsService.close(); + } + + importIconConfig(): void { + this.emitIconConfigurationImport.emit(true); + } + + exportIconConfig(): void { + this.emitIconConfigurationExport.emit(true); + } +} diff --git a/src/app/settings-module/service/settings.service.spec.ts b/src/app/settings-module/service/settings.service.spec.ts new file mode 100644 index 00000000..b55b64ef --- /dev/null +++ b/src/app/settings-module/service/settings.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SettingsService } from 'src/app/settings-module/service/settings.service'; + +describe('SettingsService', () => { + let service: SettingsService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SettingsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/settings-module/service/settings.service.ts b/src/app/settings-module/service/settings.service.ts new file mode 100644 index 00000000..556a3ee6 --- /dev/null +++ b/src/app/settings-module/service/settings.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class SettingsService { + private showSettings = new BehaviorSubject(false); + + constructor() {} + + public getShowSettings(): Observable { + return this.showSettings.asObservable(); + } + + public close(): void { + this.showSettings.next(false); + } + + public open(): void { + this.showSettings.next(true); + } +} diff --git a/src/app/settings-module/settings.module.ts b/src/app/settings-module/settings.module.ts new file mode 100644 index 00000000..0750ed43 --- /dev/null +++ b/src/app/settings-module/settings.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { DomainConfigurationComponent } from 'src/app/domain-configuration/component/domain-configuration.component'; +import { GeneralSettingsComponent } from 'src/app/general-settings/component/general-settings.component'; +import { LabelDictionaryComponent } from 'src/app/label-dictionary/component/label-dictionary.component'; +import { AutosaveSettingsComponent } from '../autosave/autosave-settings-component/autosave-settings.component'; + +@NgModule({ + declarations: [ + DomainConfigurationComponent, + GeneralSettingsComponent, + LabelDictionaryComponent, + AutosaveSettingsComponent, + ], + exports: [ + AutosaveSettingsComponent, + GeneralSettingsComponent, + DomainConfigurationComponent, + LabelDictionaryComponent, + ], + imports: [CommonModule], +}) +export class SettingsModule {} diff --git a/src/app/spec/testHelpers.spec.ts b/src/app/spec/testHelpers.spec.ts new file mode 100644 index 00000000..d71d1715 --- /dev/null +++ b/src/app/spec/testHelpers.spec.ts @@ -0,0 +1,110 @@ +import { StoryStep } from '../storyCreator-service/domain/storyStep'; +import { CanvasObject, testCanvasObject } from '../common/domain/canvasObject'; +import { testActivityCanvasObject } from '../common/domain/activityCanvasObject'; +import { deepCopy } from '../common/util/deepCopy'; +import { elementTypes } from '../common/domain/elementTypes'; + +export function preBuildTestStory(stepAmount: number): StoryStep[] { + const story: StoryStep[] = []; + let i = 0; + while (i < stepAmount) { + const previousStep = i > 0 ? story[i] : undefined; + const stepObjects = createReplayStepObjects(i + 1, previousStep); + const storyObjects = stepObjects.map((o) => o.businessObject); + if (previousStep) { + storyObjects.concat(previousStep.objects); + } + story.push({ + objects: storyObjects, + highlightedObjects: stepObjects.map((o) => o.id), + }); + i++; + } + return story; +} + +export function createTestCanvasObjects(stepAmount: number): CanvasObject[] { + const steps = [createReplayStepObjects(1)]; + + if (stepAmount === 1) { + return steps[0]; + } + let i = 1; + while (i < stepAmount) { + steps[i] = createReplayStepObjects(i + 1, { + objects: steps[i - 1].map((o) => o.businessObject), + highlightedObjects: [], + }); + + i++; + } + let allObjects: CanvasObject[] = []; + for (const step of steps) { + allObjects = allObjects.concat(step); + } + + return allObjects; +} + +export function createReplayStepObjects( + stepNumber: number, + previousStep?: StoryStep +): CanvasObject[] { + const activityFromActor = deepCopy(testActivityCanvasObject); + + activityFromActor.id = 'activity-' + stepNumber; + activityFromActor.businessObject.id = activityFromActor.id; + activityFromActor.businessObject.number = stepNumber; + + const source = previousStep + ? previousStep.objects.filter( + (o) => o.id === previousStep.highlightedObjects[4] + ) + : deepCopy(testCanvasObject); + source.type = elementTypes.ACTOR; + if (!previousStep) { + source.id = 'source-' + stepNumber; + source.businessObject.id = source.id; + source.businessObject.type = elementTypes.ACTOR; + } + source.outgoing.push(activityFromActor); + + const workObject = deepCopy(testCanvasObject); + workObject.type = elementTypes.ACTOR; + workObject.id = 'target-' + stepNumber; + workObject.businessObject.id = workObject.id; + workObject.businessObject.type = elementTypes.WORKOBJECT; + workObject.incoming.push(activityFromActor); + + activityFromActor.source = source; + activityFromActor.target = workObject; + activityFromActor.businessObject.source = source.businessObject; + activityFromActor.businessObject.target = workObject.businessObject; + + const activityFromWorkObject = deepCopy(testActivityCanvasObject); + + activityFromWorkObject.id = 'activity2-' + stepNumber; + activityFromWorkObject.businessObject.id = activityFromWorkObject.id; + + const endActor = deepCopy(testCanvasObject); + endActor.type = elementTypes.ACTOR; + endActor.id = 'source-' + stepNumber; + endActor.businessObject.id = source.id; + endActor.businessObject.type = elementTypes.ACTOR; + endActor.incoming.push(activityFromWorkObject); + + activityFromWorkObject.source = workObject; + activityFromWorkObject.target = endActor; + activityFromWorkObject.businessObject.source = workObject.businessObject; + activityFromWorkObject.businessObject.target = endActor.businessObject; + + workObject.outgoing.push(activityFromWorkObject); + + return [ + source, + activityFromActor, + workObject, + activityFromWorkObject, + endActor, + ]; +} diff --git a/src/app/spec/util.spec.ts b/src/app/spec/util.spec.ts new file mode 100644 index 00000000..046673e8 --- /dev/null +++ b/src/app/spec/util.spec.ts @@ -0,0 +1,151 @@ +import { testActivityCanvasObject } from '../common/domain/activityCanvasObject'; +import { deepCopy } from '../common/util/deepCopy'; +import { + angleBetween, + degrees, + positionsMatch, +} from '../common/util/mathExtensions'; +import { elementTypes } from '../common/domain/elementTypes'; +import { getNameFromType } from '../common/util/naming'; +import { sanitizeForDesktop, sanitizeIconName } from '../common/util/sanitizer'; + +describe('mathExtendsions', () => { + beforeEach(() => { + // polyfill for test + if (!String.prototype.includes) { + String.prototype.includes = function (search, start): boolean { + 'use strict'; + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } + }; + } + }); + + describe('degrees', () => { + it('should convert', () => { + const rad = 0.5; + const deg = 28.64788975654116; + + const converted = degrees(rad); + + expect(deg).toEqual(converted); + }); + }); + + describe('angleBetween', () => { + it('', () => { + const startPoint = { + x: 10, + y: 10, + }; + + const endPoint = { + x: 20, + y: 0, + }; + + const res = angleBetween(startPoint, endPoint); + expect(res).toEqual(45); + }); + }); + + describe('positionsMatch', () => { + it('should be true', () => { + const width = 100; + const height = 100; + const elementX = 10; + const elementY = 10; + const clickX = 50; + const clickY = 50; + + expect( + positionsMatch(width, height, elementX, elementY, clickX, clickY) + ).toBeTruthy(); + }); + + it('should be false for x', () => { + const width = 100; + const height = 100; + const elementX = 10; + const elementY = 10; + const clickX = 300; + const clickY = 50; + + expect( + positionsMatch(width, height, elementX, elementY, clickX, clickY) + ).toBeFalsy(); + }); + + it('should be false for y', () => { + const width = 100; + const height = 100; + const elementX = 10; + const elementY = 10; + const clickX = 50; + const clickY = 300; + + expect( + positionsMatch(width, height, elementX, elementY, clickX, clickY) + ).toBeFalsy(); + }); + }); +}); + +describe('deepCopy', () => { + it('should copy deep', () => { + const activity = testActivityCanvasObject; + const copy = deepCopy(activity); + + expect(copy).toEqual(activity); + + copy.id = 'testID'; + + expect(copy).not.toEqual(activity); + }); +}); + +describe('naming', () => { + describe('getNameForType', () => { + it('should get type for Actor', () => { + const testType = '_test'; + const type = elementTypes.ACTOR + testType; + + expect(getNameFromType(type)).toEqual(testType); + }); + it('should get type for WorkObject', () => { + const testType = '_test'; + const type = elementTypes.WORKOBJECT + testType; + + expect(getNameFromType(type)).toEqual(testType); + }); + it('should get clear string for Unknown input', () => { + const testType = '_test'; + const type = elementTypes.DOMAINSTORY + testType; + + expect(getNameFromType(type)).toEqual(''); + }); + }); +}); + +describe('sanitizer', () => { + describe('sanitize for desktop', () => { + it('should sanitize', () => { + const unsanitized = '/\\:*?"><|test'; + expect(sanitizeForDesktop(unsanitized)).toEqual('test'); + }); + }); + + describe('sanitize Icon Name', () => { + it('should sanitize', () => { + const unsanitized = '/\\:*?"<>|()test'; + expect(sanitizeIconName(unsanitized)).toEqual('test'); + }); + }); +}); diff --git a/src/app/storyCreator-service/domain/storyStep.ts b/src/app/storyCreator-service/domain/storyStep.ts new file mode 100644 index 00000000..1e9e42a0 --- /dev/null +++ b/src/app/storyCreator-service/domain/storyStep.ts @@ -0,0 +1,6 @@ +import { BusinessObject } from 'src/app/common/domain/businessObject'; + +export interface StoryStep { + objects: BusinessObject[]; + highlightedObjects: string[]; +} diff --git a/src/app/storyCreator-service/story-creator.service.spec.ts b/src/app/storyCreator-service/story-creator.service.spec.ts new file mode 100644 index 00000000..ec8b5392 --- /dev/null +++ b/src/app/storyCreator-service/story-creator.service.spec.ts @@ -0,0 +1,113 @@ +import { TestBed } from '@angular/core/testing'; + +import { StoryCreatorService } from './story-creator.service'; +import { ElementRegistryService } from '../elementRegistry-service/element-registry.service'; +import { StoryStep } from './domain/storyStep'; +import { ActivityCanvasObject } from '../common/domain/activityCanvasObject'; +import { deepCopy } from '../common/util/deepCopy'; +import { CanvasObject } from '../common/domain/canvasObject'; +import { elementTypes } from '../common/domain/elementTypes'; +import { testGroupCanvasObject } from '../common/domain/groupCanvasObject'; +import { + createReplayStepObjects, + preBuildTestStory, +} from '../spec/testHelpers.spec'; + +describe('StoryCreatorService', () => { + let service: StoryCreatorService; + let elementRegistryServiceSpy: jasmine.SpyObj; + + beforeEach(() => { + const elementRegistryServiceMock = jasmine.createSpyObj( + 'ElementRegistryService', + ['getActivitiesFromActors', 'getAllGroups'] + ); + TestBed.configureTestingModule({ + providers: [ + { + provide: ElementRegistryService, + useValue: elementRegistryServiceMock, + }, + ], + }); + service = TestBed.inject(StoryCreatorService); + elementRegistryServiceSpy = TestBed.inject( + ElementRegistryService + ) as jasmine.SpyObj; + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + describe('traceActivitiesAndCreateStory', () => { + const story: StoryStep[] = []; + + beforeEach(() => { + let objects: CanvasObject[] = []; + const group = deepCopy(testGroupCanvasObject); + + let i = 1; + while (i <= 3) { + const previousStep = i > 1 ? story[i - 1] : undefined; + const stepObjects = createReplayStepObjects(i, previousStep); + + objects + ? (objects = objects.concat(stepObjects)) + : (objects = stepObjects); + + let storyObjects = stepObjects.map((o) => o.businessObject); + if (previousStep) { + storyObjects = storyObjects.concat(previousStep.objects); + } + story.push({ + objects: storyObjects, + highlightedObjects: stepObjects.map((o) => o.id), + }); + i++; + } + + group.children.push(objects[2]); + + elementRegistryServiceSpy.getActivitiesFromActors.and.returnValue( + ( + objects.filter( + (o) => o.type === elementTypes.ACTIVITY + ) as ActivityCanvasObject[] + ).filter((o) => o.businessObject.number != null) + ); + elementRegistryServiceSpy.getAllGroups.and.returnValue(group); + }); + + it('should trace activities and create Story', () => { + const tracedStory = service.traceActivitiesAndCreateStory(); + + for (let i = 0; i < tracedStory.length; i++) { + const step = tracedStory[i]; + const refStep = story[i]; + + const ids = step.highlightedObjects.sort(); + const refIds = refStep.highlightedObjects.sort(); + + expect(ids).toEqual(refIds); + } + }); + }); + + describe('isStoryConsecutivelyNumbered', () => { + let story: StoryStep[]; + + beforeEach(() => { + story = preBuildTestStory(3); + }); + + it('should be true', () => { + expect(service.isStoryConsecutivelyNumbered(story)).toBeTruthy(); + }); + + it(' should be false', () => { + story[1].objects = []; + expect(service.isStoryConsecutivelyNumbered(story)).toBeFalsy(); + }); + }); +}); diff --git a/src/app/storyCreator-service/story-creator.service.ts b/src/app/storyCreator-service/story-creator.service.ts new file mode 100644 index 00000000..00178d83 --- /dev/null +++ b/src/app/storyCreator-service/story-creator.service.ts @@ -0,0 +1,138 @@ +import { Injectable } from '@angular/core'; +import { elementTypes } from '../common/domain/elementTypes'; +import { ActivityCanvasObject } from '../common/domain/activityCanvasObject'; +import { BusinessObject } from '../common/domain/businessObject'; +import { CanvasObject } from '../common/domain/canvasObject'; +import { ElementRegistryService } from '../elementRegistry-service/element-registry.service'; +import { StoryStep } from './domain/storyStep'; +import { Dictionary } from '../common/domain/dictionary/dictionary'; + +@Injectable({ + providedIn: 'root', +}) +export class StoryCreatorService { + constructor(private elementRegistryService: ElementRegistryService) {} + + public traceActivitiesAndCreateStory(): StoryStep[] { + const tracedActivityMap = new Dictionary(); + const story: StoryStep[] = []; + const activities = this.elementRegistryService.getActivitiesFromActors(); + + activities.forEach((activity) => { + const activityNumber = activity.businessObject.number; + // @ts-ignore + const tracedItem = tracedActivityMap.get(activityNumber - 1) + ? // @ts-ignore + tracedActivityMap.get(activityNumber - 1) + : []; + tracedItem.push(activity); + // @ts-ignore + tracedActivityMap.set(activityNumber - 1, tracedItem); + }); + + // @ts-ignore + for (let i = 0; i < tracedActivityMap.keysArray().length; i++) { + this.createStep(tracedActivityMap, i, story); + } + this.addGroupStep(story); + return story; + } + + private createStep( + tracedActivityMap: Dictionary, + i: number, + story: StoryStep[] + ): void { + // @ts-ignore + const stepObjects = this.getStepObjects(tracedActivityMap.get(i) || []); + const highlightedElements = stepObjects.map((t) => t.id); + if (i > 0) { + story[i - 1].objects.forEach((object) => { + if (!stepObjects.includes(object)) { + stepObjects.push(object); + } + }); + } + story[i] = { + highlightedObjects: highlightedElements, + objects: stepObjects, + }; + } + + public isStoryConsecutivelyNumbered(story: StoryStep[]): boolean { + if (!story || story.length === 0) { + return false; + } + const errorStep = []; + let complete = true; + for (let i = 0; i < story.length; i++) { + if ( + !story[i] || + !(story[i].objects.length > 0) || + story[i].objects.filter( + (element) => element.type === elementTypes.ACTIVITY + ).length <= 0 + ) { + complete = false; + errorStep[i] = true; + } else { + errorStep[i] = false; + } + } + return complete; + } + + private getStepObjects( + tracedActivity: ActivityCanvasObject[] + ): BusinessObject[] { + const initialSource: CanvasObject[] = []; + const activities = tracedActivity; + const targetObjects: CanvasObject[] = []; + + tracedActivity.forEach((parallelStep: ActivityCanvasObject) => { + // @ts-ignore + initialSource.push(parallelStep.source); + + const firstTarget = parallelStep.target; + // @ts-ignore + targetObjects.push(firstTarget); + + // check the outgoing activities for each target + for (const checkTarget of targetObjects) { + if ( + checkTarget.businessObject && + !checkTarget.businessObject.type.includes('actor') && + checkTarget.outgoing + ) { + // check the target for each outgoing activity + checkTarget.outgoing.forEach((activity: ActivityCanvasObject) => { + // @ts-ignore + activities.push(activity); + const activityTarget = activity.target; + // @ts-ignore + if (!targetObjects.includes(activityTarget)) { + // @ts-ignore + targetObjects.push(activityTarget); + } + }); + } + } + }); + return initialSource + .map((e) => e.businessObject) + .concat(activities.map((a) => a.businessObject)) + .concat(targetObjects.map((t) => t.businessObject)); + } + + private addGroupStep(story: StoryStep[]): void { + const groups = this.elementRegistryService.getAllGroups() as CanvasObject[]; + if (groups.length > 0) { + story.push({ + highlightedObjects: [], + objects: groups + .map((g) => g.businessObject) + .concat(story[story.length - 1].objects), + }); + } + } +} diff --git a/src/app/titleAndDescription/description/component/description.component.html b/src/app/titleAndDescription/description/component/description.component.html new file mode 100644 index 00000000..532f01c7 --- /dev/null +++ b/src/app/titleAndDescription/description/component/description.component.html @@ -0,0 +1,3 @@ +
+
{{ description | async }}
+
diff --git a/src/app/titleAndDescription/description/component/description.component.scss b/src/app/titleAndDescription/description/component/description.component.scss new file mode 100644 index 00000000..24557920 --- /dev/null +++ b/src/app/titleAndDescription/description/component/description.component.scss @@ -0,0 +1,18 @@ +#descriptionContainer { + height: 75px; +} + +#descriptionText { + height: 100%; + margin-bottom: 3px; + position: relative; + font-size: 10pt; + overflow-wrap: break-word; + word-wrap: break-word; + hyphens: auto; + -webkit-hyphenate-character: auto; /* not supported by Chrome*/ +} + +.descriptionText:hover { + cursor: default; +} diff --git a/src/app/titleAndDescription/description/component/description.component.spec.ts b/src/app/titleAndDescription/description/component/description.component.spec.ts new file mode 100644 index 00000000..b2d8bd2b --- /dev/null +++ b/src/app/titleAndDescription/description/component/description.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DescriptionComponent } from './description.component'; + +describe('DescriptionComponent', () => { + let component: DescriptionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DescriptionComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DescriptionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/titleAndDescription/description/component/description.component.ts b/src/app/titleAndDescription/description/component/description.component.ts new file mode 100644 index 00000000..036b111e --- /dev/null +++ b/src/app/titleAndDescription/description/component/description.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { TitleService } from '../../service/title.service'; + +@Component({ + selector: 'app-description', + templateUrl: './description.component.html', + styleUrls: ['./description.component.scss'], +}) +export class DescriptionComponent implements OnInit { + description: Observable; + + constructor(private titleService: TitleService) { + this.description = this.titleService.getDescriptionObservable(); + } + + ngOnInit(): void {} +} diff --git a/src/app/titleAndDescription/service/title.service.spec.ts b/src/app/titleAndDescription/service/title.service.spec.ts new file mode 100644 index 00000000..bf5198e9 --- /dev/null +++ b/src/app/titleAndDescription/service/title.service.spec.ts @@ -0,0 +1,76 @@ +import { TestBed } from '@angular/core/testing'; +// @ts-ignore +import { version } from '../../../../package.json'; + +import { + initialTitle, + TitleService, +} from 'src/app/titleAndDescription/service/title.service'; + +describe('TitleService', () => { + let service: TitleService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TitleService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should getVerision', () => { + expect(service.getVersion()).toEqual(version); + }); + + it('should initialize title and Description', () => { + expect(service.getDescription()).toEqual(''); + expect(service.getTitle()).toEqual(initialTitle); + }); + + // allowUndo is untestable due to it's interaction with the commandStack + // implicitly tests updateTitle & updateDescription + describe('updateTitleAndDescription', () => { + it('should update title', () => { + service.updateTitleAndDescription('title', null, false); + + expect(service.getTitle()).toEqual('title'); + expect(service.getDescription()).toEqual(''); + + service + .getTitleObservable() + .subscribe((value) => expect(value).toEqual('title')); + service + .getDescriptionObservable() + .subscribe((value) => expect(value).toEqual('')); + }); + + it('should update description', () => { + service.updateTitleAndDescription(null, 'description', false); + + expect(service.getTitle()).toEqual(initialTitle); + expect(service.getDescription()).toEqual('description'); + + service + .getTitleObservable() + .subscribe((value) => expect(value).toEqual(initialTitle)); + service + .getDescriptionObservable() + .subscribe((value) => expect(value).toEqual('description')); + }); + + it('should update title and description', () => { + service.updateTitleAndDescription('title', 'description', false); + + expect(service.getTitle()).toEqual('title'); + expect(service.getDescription()).toEqual('description'); + + service + .getTitleObservable() + .subscribe((value) => expect(value).toEqual('title')); + service + .getDescriptionObservable() + .subscribe((value) => expect(value).toEqual('description')); + }); + }); +}); diff --git a/src/app/titleAndDescription/service/title.service.ts b/src/app/titleAndDescription/service/title.service.ts new file mode 100644 index 00000000..56cb157c --- /dev/null +++ b/src/app/titleAndDescription/service/title.service.ts @@ -0,0 +1,96 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; + +export const initialTitle = '< title >'; +export const initialDescription = '< description >'; +const version = '2.0.0-alpha'; + +@Injectable({ + providedIn: 'root', +}) +export class TitleService { + private title = initialTitle; + private description = initialDescription; + + private titleSubject = new BehaviorSubject(this.title); + private descriptionSubject = new BehaviorSubject(this.description); + private showDescription = new BehaviorSubject(true); + private commandStack: any; + + constructor() {} + + public setCommandStack(commandStack: any): void { + this.commandStack = commandStack; + } + + public updateTitleAndDescription( + title: string | null, + description: string | null, + allowUndo: boolean + ): void { + if (allowUndo) { + this.fireTitleAndDescriptionUpdate(title, description); + } else { + if (!title) { + title = this.title; + } + if (!description) { + description = this.description; + } + + this.updateTitle(title); + this.updateDescription(description); + } + } + + private updateTitle(title: string): void { + this.titleSubject.next(title); + this.title = title; + document.title = title + ' - Domain Story Modeler'; + } + + private updateDescription(description: string): void { + this.descriptionSubject.next(description); + this.description = description; + } + + public getTitleObservable(): Observable { + return this.titleSubject as Observable; + } + + public setShowDescription(show: boolean): void { + this.showDescription.next(show); + } + + public getShowDescriptionObservable(): Observable { + return this.showDescription.asObservable(); + } + + public getTitle(): string { + return this.title; + } + + public getDescriptionObservable(): Observable { + return this.descriptionSubject as Observable; + } + + public getDescription(): string { + return this.description; + } + + public getVersion(): string { + return version; + } + + private fireTitleAndDescriptionUpdate( + newTitle: string | null, + newDescription: string | null + ): void { + const context = { + newTitle, + newDescription, + }; + this.commandStack.execute('story.updateHeadlineAndDescription', context); + } +} diff --git a/src/app/titleAndDescription/title/component/title.component.html b/src/app/titleAndDescription/title/component/title.component.html new file mode 100644 index 00000000..b557de49 --- /dev/null +++ b/src/app/titleAndDescription/title/component/title.component.html @@ -0,0 +1,16 @@ +

+ {{ title | async }} + +

diff --git a/src/app/titleAndDescription/title/component/title.component.scss b/src/app/titleAndDescription/title/component/title.component.scss new file mode 100644 index 00000000..a6d63e46 --- /dev/null +++ b/src/app/titleAndDescription/title/component/title.component.scss @@ -0,0 +1,29 @@ +.headline, +.headline_hover { + font-size: 17pt; + overflow-wrap: break-word; + word-wrap: break-word; + hyphens: auto; + -webkit-hyphenate-character: auto; /* not supported by Chrome*/ + margin-left: 0; + margin-top: 0; + margin-bottom: 0; + height: 40px; + cursor: pointer; +} + +.headline_hover { + color: #42aebb; +} + +#title { + height: 40px; +} + +.edit { + opacity: 0; +} + +.edit_hover { + opacity: 100; +} diff --git a/src/app/titleAndDescription/title/component/title.component.spec.ts b/src/app/titleAndDescription/title/component/title.component.spec.ts new file mode 100644 index 00000000..c18d05bc --- /dev/null +++ b/src/app/titleAndDescription/title/component/title.component.spec.ts @@ -0,0 +1,32 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TitleComponent } from './title.component'; +import { DialogService } from '../../../dialog/service/dialog.service'; +import { MockService } from 'ng-mocks'; + +describe('TitleComponent', () => { + let component: TitleComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TitleComponent], + providers: [ + { + provide: DialogService, + useValue: MockService(DialogService), + }, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TitleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/titleAndDescription/title/component/title.component.ts b/src/app/titleAndDescription/title/component/title.component.ts new file mode 100644 index 00000000..67c94e04 --- /dev/null +++ b/src/app/titleAndDescription/title/component/title.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +import { TitleService } from '../../service/title.service'; +import { Observable } from 'rxjs'; +import { MatDialogConfig } from '@angular/material/dialog'; +import { HeaderDialogComponent } from '../../../header/header-dialog/header-dialog.component'; +import { DialogService } from '../../../dialog/service/dialog.service'; + +@Component({ + selector: 'app-title', + templateUrl: './title.component.html', + styleUrls: ['./title.component.scss'], +}) +export class TitleComponent implements OnInit { + title: Observable; + mouseOver = false; + + constructor( + private titleService: TitleService, + private dialogService: DialogService + ) { + this.title = this.titleService.getTitleObservable(); + } + + ngOnInit(): void {} + + openHeaderDialog(): void { + const config = new MatDialogConfig(); + config.disableClose = false; + config.autoFocus = true; + this.dialogService.openDialog(HeaderDialogComponent, config); + } +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/app/domain-story-modeler/language/icon/icons.css b/src/assets/icons.css similarity index 94% rename from app/domain-story-modeler/language/icon/icons.css rename to src/assets/icons.css index 25b5c0ce..c40cd3dd 100644 --- a/app/domain-story-modeler/language/icon/icons.css +++ b/src/assets/icons.css @@ -1,14 +1,14 @@ .icon-domain-story-person::before { content: url('data:image/svg+xml;utf8,'); - /* font: "Material Icons"; - icon_name: "perm_identity"; + /* font: "Material Icons"; + icon_name: "perm_identity"; */ } .icon-domain-story-group::before { content: url('data:image/svg+xml;utf8,'); - /* font: "Material Icons"; - icon_name: "group"; + /* font: "Material Icons"; + icon_name: "group"; */ } @@ -27,7 +27,7 @@ } .icon-domain-story-document::before { - content: url('data:image/svg+xml;utf8,'); + content: url('data:image/svg+xml;utf8,'); /* font:"Material Icons"; icon_name: "description"; */ @@ -89,16 +89,16 @@ */ } - .icon-domain-story-color-picker::before { - content: url('data:image/svg+xml;utf8,'); - /* font: "Material Icons"; +.icon-domain-story-color-picker::before { + content: url('data:image/svg+xml;utf8,'); + /* font: "Material Icons"; icon_name: "color_lens"; */ - } +} - .icon-domain-story-flag::before { - content: url('data:image/svg+xml;utf8,'); - /* font: "Material Icons"; +.icon-domain-story-flag::before { + content: url('data:image/svg+xml;utf8,'); + /* font: "Material Icons"; icon_name: "flag"; */ } diff --git a/app/logo/Quadrat_wps_de_Farbig.png b/src/assets/logo/Quadrat_wps_de_Farbig.png similarity index 100% rename from app/logo/Quadrat_wps_de_Farbig.png rename to src/assets/logo/Quadrat_wps_de_Farbig.png diff --git a/app/logo/domainStorytellingIcon.png b/src/assets/logo/domainStorytellingIcon.png similarity index 100% rename from app/logo/domainStorytellingIcon.png rename to src/assets/logo/domainStorytellingIcon.png diff --git a/app/logo/dst_logo.png b/src/assets/logo/dst_logo.png similarity index 100% rename from app/logo/dst_logo.png rename to src/assets/logo/dst_logo.png diff --git a/app/logo/edit_blue.png b/src/assets/logo/edit_blue.png similarity index 100% rename from app/logo/edit_blue.png rename to src/assets/logo/edit_blue.png diff --git a/src/decs.d.ts b/src/decs.d.ts new file mode 100644 index 00000000..fe30c8ce --- /dev/null +++ b/src/decs.d.ts @@ -0,0 +1,2 @@ +declare module 'DomainStoryModeler'; +declare module 'dsActivityHandlers'; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 00000000..c9669790 --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true, +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 00000000..31cb7855 --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false, +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 + + + + Egon + + + + + + + + + + + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 00000000..d9a2e7e4 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,13 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic() + .bootstrapModule(AppModule) + .catch((err) => console.error(err)); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 00000000..8a120c37 --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,64 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * IE11 requires the following for NgClass support on SVG elements + */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/src/styles.scss b/src/styles.scss new file mode 100644 index 00000000..02c3c6ab --- /dev/null +++ b/src/styles.scss @@ -0,0 +1,294 @@ +// Custom Theming for Angular Material +// For more information: https://material.angular.io/guide/theming +@use "~@angular/material" as mat; +@import "~@angular/material/theming"; +// Plus imports for other components in your app. + +// Include the common styles for Angular Material. We include this here so that you only +// have to load a single css file for Angular Material in your app. +// Be sure that you only ever include this mixin once! +@include mat.core(); + +// Define the palettes for your theme using the Material Design palettes available in palette.scss +// (imported above). For each palette, you can optionally specify a default, lighter, and darker +// hue. Available color palettes: https://material.io/design/color/ +$egon-primary: mat.define-palette(mat.$indigo-palette); +$egon-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400); + +// The warn palette is optional (defaults to red). +$egon-warn: mat.define-palette(mat.$red-palette); + +// Create the theme object. A theme consists of configurations for individual +// theming systems such as "color" or "typography". +$egon-theme: mat.define-light-theme( + ( + color: ( + primary: $egon-primary, + accent: $egon-accent, + warn: $egon-warn, + ), + ) +); + +// Include theme styles for core and each component used in your app. +// Alternatively, you can import and @include the theme mixins for each component +// that you are using. +@include mat.all-component-themes($egon-theme); + +/* You can add global styles to this file, and also import other style files */ + +html, +body { + height: 100%; +} +body { + margin: 0; + font-family: Roboto, "Helvetica Neue", sans-serif; +} + +app-root { + display: block; + height: 100%; +} + +/* BPMN elements */ + +.djs-overlay-context-pad { + width: 120px; + height: 238px; + overflow-y: auto; +} + +.djs-context-pad.open { + border: solid 1px #80808054; +} + +.djs-context-pad.open > .group { + border: solid 1px #80808054; + padding: 1px; + background-color: white; +} + +/** + * from bpmn.io + */ + +/** + * palette + */ + +.djs-palette { + position: absolute; + left: 20px; + top: 20px; + + box-sizing: border-box; + width: 32px; +} + +.djs-palette .separator { + margin: 0 2px; + padding-top: 0; + + border: none; + border-bottom: solid 1px #ddd; + + clear: both; +} + +.djs-palette .entry:before { + vertical-align: middle; +} + +.djs-palette .djs-palette-toggle { + cursor: pointer; +} + +.djs-palette .entry, +.djs-palette .djs-palette-toggle { + color: #333; + font-size: 26px; + + text-align: center; +} + +.djs-palette .entry { + float: left; +} + +.djs-palette .entry img { + max-width: 100%; +} + +.djs-palette .djs-palette-entries:after { + content: ""; + display: table; + clear: both; +} + +.djs-palette .djs-palette-toggle:hover { + background: #666; +} + +.djs-palette .entry:hover { + fill: #42aebb; +} + +.djs-palette .highlighted-entry { + color: #42aebb !important; +} + +.djs-palette .entry, +.djs-palette .djs-palette-toggle { + width: 30px; + height: 30px; + line-height: 30px; + cursor: default; +} + +/** + * Palette open / two-column layout is controlled via + * classes on the palette. Events to hook into palette + * changed life-cycle are available in addition. + */ +.djs-palette.two-column.open { + width: 64px; +} + +.djs-palette:not(.open) .djs-palette-entries { + display: none; +} + +.djs-palette:not(.open) { + overflow: hidden; +} + +.djs-palette.open .djs-palette-toggle { + display: none; +} + +/** + * outline styles + */ + +.djs-outline { + fill: none; + visibility: hidden; +} + +.djs-element.hover .djs-outline, +.djs-element.selected .djs-outline { + visibility: visible; + shape-rendering: crispEdges; + stroke-dasharray: 3, 3; +} + +.djs-element.selected .djs-outline { + stroke: #8888ff; + stroke-width: 1px; +} + +.djs-element.hover .djs-outline { + stroke: #42aebb; +} + +.djs-element.attach-ok .djs-visual > :nth-child(1) { + stroke: #42aebb !important; +} + +/** +* Selection box style +* +*/ +.djs-lasso-overlay { + stroke: #42aebb; +} + +/** + * Resize styles + */ +.djs-resize-overlay { + stroke: #42aebb; +} + +/** + * drag styles + */ +.djs-dragger .djs-visual circle, +.djs-dragger .djs-visual path, +.djs-dragger .djs-visual polygon, +.djs-dragger .djs-visual polyline, +.djs-dragger .djs-visual rect, +.djs-dragger .djs-visual text { + fill: none !important; + stroke: #42aebb !important; +} + +/** + * snapping + */ +.djs-snap-line { + stroke: #42aebb; + stroke: rgba(255, 195, 66, 0.5); +} + +.djs-palette .entry:hover { + color: #42aebb; +} + +.djs-palette .highlighted-entry { + color: #42aebb !important; +} + +.djs-context-pad .entry:hover { + background: #42aebb; +} + +.djs-popup .djs-popup-header .entry.active { + color: #42aebb; + border: solid 1px #42aebb; + background-color: #f6f6f6; +} + +.djs-popup-body .entry { + width: auto !important; +} + +.djs-segment-dragger:hover .djs-visual, +.djs-segment-dragger.djs-dragging .djs-visual, +.djs-bendpoint:hover .djs-visual, +.djs-bendpoint.floating .djs-visual { + fill: #42aebb; + stroke-opacity: 0.5; + stroke: black; +} + +.djs-segment-dragger.djs-dragging .djs-visual, +.djs-bendpoint.djs-dragging .djs-visual { + fill: #42aebb; +} +.djs-tooltip-error > * { + color: #42aebb; + border-left: solid 5px #42aebb; +} + +.djs-search-input input:focus { + outline: none; + border-color: #52b415; +} + +.djs-search-result:hover { + background: #fdffd6; +} + +.djs-search-result-selected { + background: #42aebb; +} + +.djs-search-result-selected:hover { + background: #42aebb; +} + +.djs-search-overlay { + background: #42aebb; +} diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 00000000..37713407 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,29 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/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/test/TestHelper.js b/test/TestHelper.js deleted file mode 100644 index 657983f9..00000000 --- a/test/TestHelper.js +++ /dev/null @@ -1,21 +0,0 @@ -export * from 'bpmn-js/test/helper'; - -import { - insertCSS -} from 'bpmn-js/test/helper'; - -insertCSS('diagram-js.css', require('bpmn-js/dist/assets/diagram-js.css')); -insertCSS('bpmn-embedded.css', require('bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css')); - -insertCSS('diagram-js-testing.css', - '.test-container .result { height: 500px; }' + '.test-container > div' -); - -insertCSS('custom-modeler-testing.css', - '.icon-custom-triangle {' - + 'background: url(\'data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22%233CAA82%22%20width%3D%22270%22%20height%3D%22240%22%3E%3Cpath%20d%3D%22M8%2C40%20l%2015%2C-27%20l%2015%2C27%20z%22%2F%3E%3C%2Fsvg%3E\');' - + '}' - + '.icon-custom-circle {' - + 'background: url(\'data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20stroke-width%3D%228%22%20stroke%3D%22%2348a%22%20fill%3D%22none%22%20viewBox%3D%220%200%20120%20120%22%3E%3Ccircle%20cx%3D%2260%22%20cy%3D%2260%22%20r%3D%2240%22%2F%3E%3C%2Fsvg%3E\');' - + '}' -); diff --git a/test/spec/features/iconSetCustomization/persistenceSpec.js b/test/spec/features/iconSetCustomization/persistenceSpec.js deleted file mode 100644 index d745dcfb..00000000 --- a/test/spec/features/iconSetCustomization/persistenceSpec.js +++ /dev/null @@ -1,32 +0,0 @@ -import { addToSelectedActors, getSelectedActorsDictionary, getSelectedWorkObjectsDictionary, addToSelectedWorkObjects } from '../../../../app/domain-story-modeler/features/iconSetCustomization/dictionaries'; -import { getTypeIconSRC, initTypeDictionaries } from '../../../../app/domain-story-modeler/language/icon/dictionaries'; -import { ACTOR, WORKOBJECT } from '../../../../app/domain-story-modeler/language/elementTypes'; -import { createConfigFromDictionaries } from '../../../../app/domain-story-modeler/features/iconSetCustomization/persitence'; -import { default_conf } from '../../../../app/domain-story-modeler/language/icon/iconConfig'; - -describe('persitence ', function() { - const actorName = 'Pet', workObjectName = 'Flag'; - - it('createConfigFromDictionaries', function() { - - // Given - initTypeDictionaries(default_conf.actors, default_conf.workObjects); - addToSelectedActors(actorName, getTypeIconSRC(ACTOR, ACTOR + actorName)); - addToSelectedWorkObjects(workObjectName, getTypeIconSRC(WORKOBJECT, WORKOBJECT + workObjectName)); - - const actors = getSelectedActorsDictionary(); - const workObjects = getSelectedWorkObjectsDictionary(); - - // When - const json = createConfigFromDictionaries(actors, null, workObjects, null); - - // Then - const actorsJSON = json.actors; - const workObjectsJSON = json.workObjects; - - expect(actorsJSON).to.exist; - expect(actorsJSON.Pet).to.exist; - expect(workObjectsJSON).to.exist; - expect(workObjectsJSON.Flag).to.exist; - }); -}); \ No newline at end of file diff --git a/test/spec/features/import/importSpec.js b/test/spec/features/import/importSpec.js deleted file mode 100644 index 53eb304f..00000000 --- a/test/spec/features/import/importSpec.js +++ /dev/null @@ -1,33 +0,0 @@ -import { restoreTitleFromFileName } from '../../../../app/domain-story-modeler/features/import/import'; - -describe('restore title', function() { - - it('from .dst file', function() { - - // Given - let filename = 'Exported Domain Story (name with blanks)_2021-01-13.dst'; - - // When - let title = restoreTitleFromFileName(filename, false); - - - // Then - assert.equal(title, 'Exported Domain Story (name with blanks)'); - - }); - - it('from .dst.svg', function() { - - // Given - let filename = 'Exported Domain Story (name with blanks)_2021-01-13.dst.svg'; - - // When - let title = restoreTitleFromFileName(filename, true); - - - // Then - assert.equal(title, 'Exported Domain Story (name with blanks)'); - - }); - -}); \ No newline at end of file diff --git a/test/spec/features/labeling/DSLabelUtilSpec.js b/test/spec/features/labeling/DSLabelUtilSpec.js deleted file mode 100644 index 4a9eb53b..00000000 --- a/test/spec/features/labeling/DSLabelUtilSpec.js +++ /dev/null @@ -1,119 +0,0 @@ -import '../../../../app/domain-story-modeler/util/MathExtensions'; - -import { selectPartOfActivity, calculateTextWidth } from '../../../../app/domain-story-modeler/features/labeling/DSLabelUtil'; - -describe('DSLabelUtil', function() { - - // will only be used for three or more waypoints - it('selectActivity bothSlanted test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 30, - y: 30 - }; - - const midPoint = { - x: 30, - y: 20 - }; - - const waypoints = [startPoint, midPoint, endPoint]; - let angleActivity = []; - - for (let i = 0; i < 3 - 1; i++) { // calculate the angles of the activity - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - - const res = selectPartOfActivity(waypoints, angleActivity); - - assert.equal(res, 0); - assert.deepEqual(res, 0); - - }); - - it('selectActivity secondStraight test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 100, - y: 30 - }; - - const midPoint = { - x: 20, - y: 30 - }; - - const waypoints = [startPoint, midPoint, endPoint]; - let angleActivity = []; - - for (let i = 0; i < 3 - 1; i++) { // calculate the angles of the activity - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - const res = selectPartOfActivity(waypoints, angleActivity); - - assert.equal(res, 1); - assert.deepEqual(res, 1); - - }); - - it('selectActivity firstStraight test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 30, - y: 30 - }; - - const midPoint = { - x: 30, - y: 10 - }; - - const waypoints = [startPoint, midPoint, endPoint]; - let angleActivity = []; - - for (let i = 0; i < 3 - 1; i++) { // calculate the angles of the activity - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - - const res = selectPartOfActivity(waypoints, angleActivity); - - assert.equal(res, 0); - assert.deepEqual(res, 0); - }); - -}); - -describe('calculateTextWidth', function() { - it('returns 0 for empty text', function() { - assert.equal(0, calculateTextWidth('')); - }); - - it('returns 0 for null', function() { - assert.equal(0, calculateTextWidth(null)); - }); - - it('returns 0 for undefined', function() { - assert.equal(0, calculateTextWidth(undefined)); - }); - - it('returns same value for same characters', function() { - assert.equal(calculateTextWidth('AIW'), calculateTextWidth('AIW')); - assert.equal(calculateTextWidth('AIW'), calculateTextWidth('IWA')); - }); - - it('distinguishes casing', function() { - assert.equal(calculateTextWidth('abcdefghi'), calculateTextWidth('ABCDEFGHI')); - }); -}); diff --git a/test/spec/features/labeling/positionSpec.js b/test/spec/features/labeling/positionSpec.js deleted file mode 100644 index 6d66cb9a..00000000 --- a/test/spec/features/labeling/positionSpec.js +++ /dev/null @@ -1,133 +0,0 @@ -import { selectPartOfActivity } from '../../../../app/domain-story-modeler/features/labeling/DSLabelUtil'; -import { labelPositionX, labelPositionY, labelPosition } from '../../../../app/domain-story-modeler/features/labeling/position'; - -describe('position', function() { - - it('labelPosition test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 30, - y: 30 - }; - - const midPoint = { - x: 30, - y: 20 - }; - const waypoints = [startPoint, midPoint, endPoint]; - - let angleActivity = []; - for (let i = 0; i < 3 - 1; i++) { // calculate the angles of the activity - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - const selectedActivity = selectPartOfActivity(waypoints, angleActivity); - - const xPos = labelPositionX(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - const yPos = labelPositionY(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - - const supposed = { - x: xPos, - y: yPos, - selected: selectedActivity - }; - - const res = labelPosition(waypoints); - - assert.equal(res.x, supposed.x); - assert.deepEqual(res.x, supposed.x); - assert.equal(res.y, supposed.y); - assert.deepEqual(res.y, supposed.y); - assert.equal(res.selected, supposed.selected); - assert.deepEqual(res.selected, supposed.selected); - }); - - it('labelPosition test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 30, - y: 30 - }; - - const midPoint = { - x: 20, - y: 30 - }; - - const waypoints = [startPoint, midPoint, endPoint]; - - let angleActivity = []; - for (let i = 0; i < 3 - 1; i++) { // calculate the angles of the activity - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - const selectedActivity = selectPartOfActivity(waypoints, angleActivity); - - const xPos = labelPositionX(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - const yPos = labelPositionY(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - - const supposed = { - x: xPos, - y: yPos, - selected: selectedActivity - }; - - const res = labelPosition(waypoints); - - assert.equal(res.x, supposed.x); - assert.deepEqual(res.x, supposed.x); - assert.equal(res.y, supposed.y); - assert.deepEqual(res.y, supposed.y); - assert.equal(res.selected, supposed.selected); - assert.deepEqual(res.selected, supposed.selected); - }); - - it('labelPosition test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 30, - y: 30 - }; - - const midPoint = { - x: 15, - y: 15 - }; - - const waypoints = [startPoint, midPoint, endPoint]; - - let angleActivity = []; - for (let i = 0; i < 3 - 1; i++) { // calculate the angles of the activity - angleActivity[i] = Math.angleBetween(waypoints[i], waypoints[i + 1]); - } - const selectedActivity = selectPartOfActivity(waypoints, angleActivity); - - const xPos = labelPositionX(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - const yPos = labelPositionY(waypoints[selectedActivity], waypoints[selectedActivity + 1]); - - const supposed = { - x: xPos, - y: yPos, - selected: selectedActivity - }; - - const res = labelPosition(waypoints); - - assert.equal(res.x, supposed.x); - assert.deepEqual(res.x, supposed.x); - assert.equal(res.y, supposed.y); - assert.deepEqual(res.y, supposed.y); - assert.equal(res.selected, supposed.selected); - assert.deepEqual(res.selected, supposed.selected); - }); -}); \ No newline at end of file diff --git a/test/spec/features/numbering/numberingSpec.js b/test/spec/features/numbering/numberingSpec.js deleted file mode 100644 index 87026cb4..00000000 --- a/test/spec/features/numbering/numberingSpec.js +++ /dev/null @@ -1,41 +0,0 @@ -import { numberBoxDefinitions } from '../../../../app/domain-story-modeler/features/numbering/numbering'; -import { labelPosition } from '../../../../app/domain-story-modeler/features/labeling/position'; - -describe('numbering', function() { - - it('numberBoxDefinitions', function() { - - // Given - const element = { - waypoints: [{ - original: { - x: 10, - y:10 - }, - x:10, - y:10 - }, - { - original: { - x: 20, - y:20 - }, - x:20, - y:20 - } - ] - }; - - const position = labelPosition(element.waypoints); - - // When - - const box = numberBoxDefinitions(element); - - // Then - - assert.equal(box.x, position.x - 50); - assert.equal(box.y, position.y - 19); - }); - -}); \ No newline at end of file diff --git a/test/spec/features/replay/replaySpec.js b/test/spec/features/replay/replaySpec.js deleted file mode 100644 index c149f6c2..00000000 --- a/test/spec/features/replay/replaySpec.js +++ /dev/null @@ -1,153 +0,0 @@ -import { - isStoryConsecutivelyNumbered, -} from '../../../../app/domain-story-modeler/features/replay/replay'; -import { - ACTOR, - WORKOBJECT, - ACTIVITY -} from '../../../../app/domain-story-modeler/language/elementTypes'; -import { createStep, traceActivities } from '../../../../app/domain-story-modeler/features/replay/initializeReplay'; - -describe('replay', function() { - it('isStoryConsecutivelyNumbered true', function() { - - // Given - const replaySteps = [ - { activities: [1] }, - { activities: [1] }, - { activities: [1] }, - { activities: [1] }, - { activities: [1] }, - { activities: [1] }, - { activities: [1] } - ]; - - // When - const isConsecutive = isStoryConsecutivelyNumbered(replaySteps); - - // Then - expect(isConsecutive).to.be.true; - }); - - it('isStoryConsecutivelyNumbered false', function() { - - // Given - const replaySteps = [ - { activities: [' '] }, - { activities: [' '] }, - { activities: [] }, - { activities: [' '] }, - { activities: [' '] }, - { activities: [' '] }, - { activities: [' '] } - ]; - - // When - const isConsecutive = isStoryConsecutivelyNumbered(replaySteps); - - // Then - expect(isConsecutive).to.be.false; - }); - - it('createStep', function() { - - // fix test - // Given - const activityTrace = [ - { - type: ACTIVITY, - businessObject: {}, - source: 'initial', - target: { - businessObject: { - type: WORKOBJECT - }, - outgoing: [ - { - type: ACTIVITY, - target: { - businessObject: { - type: ACTOR - } - } - } - ] - } - } - ]; - - // When - - const step = createStep(activityTrace); - - // Then - - expect(step.sources).to.exist; - assert.equal(step.sources[0], activityTrace[0].source); - expect(step.activities).to.exist; - assert.equal(step.activities.length, 2); - expect(step.targets).to.exist; - assert.equal(step.targets.length, 2); - }); - - it('traceActivities', function() { - - // Given - - const tracedActivity1 = { - type: ACTIVITY, - businessObject: { - number: 1 - }, - source: 'initial', - number: 1, - target: { - businessObject: { - type: WORKOBJECT - }, - outgoing: [ - { - type: ACTIVITY, - target: { - businessObject: { - type: ACTOR - } - } - } - ] - } - }, - tracedActivity2 = { - type: ACTIVITY, - businessObject: { - number: 2 - }, - source: 'initial', - number: 2, - target: { - businessObject: { - type: WORKOBJECT - }, - outgoing: [ - { - type: ACTIVITY, - target: { - businessObject: { - type: ACTOR - } - } - } - ] - } - }; - let activitiesFromActors = [tracedActivity1, tracedActivity2]; - - // When - - const tracedActivities = traceActivities(activitiesFromActors); - - // Then - expect(tracedActivities).to.exist; - assert.equal(tracedActivities.length, 2); - }); -}); diff --git a/test/spec/language/DomainStoryIconCustomizationSpec.js b/test/spec/language/DomainStoryIconCustomizationSpec.js deleted file mode 100644 index 0bce59f6..00000000 --- a/test/spec/language/DomainStoryIconCustomizationSpec.js +++ /dev/null @@ -1,86 +0,0 @@ -import { addIMGToIconDictionary } from '../../../app/domain-story-modeler/features/iconSetCustomization/appendIconDictionary'; -import { getIconSource, getAppendedIconDictionary } from '../../../app/domain-story-modeler/features/iconSetCustomization/dictionaries'; -import { customConfigNameTag, customConfigTag, useCustomConfigTag } from '../../../app/domain-story-modeler/features/iconSetCustomization/persitence'; -import { getIconset } from '../../../app/domain-story-modeler/language/icon/iconConfig'; - -const vpnKeySRC ='data:image/svg+xml;utf8,'; - -const presetIconConfig = { - 'actors': { - 'Pet':'' - }, - 'workObjects': { - 'Store':'' - } -}; - -localStorage.removeItem(useCustomConfigTag); - -describe('domainStory customIconConfig', function() { - - if (!String.prototype.startsWith) { - Object.defineProperty(String.prototype, 'startsWith', { - value: function(search, pos) { - pos = !pos || pos < 0 ? 0 : +pos; - return this.substring(pos, pos + search.length) === search; - } - }); - } - - describe('append custom Icon to Dictionary', function() { - - it('custom Icon is in appended dictionary', function() { - - // given - const name = 'customIcon'; - - // when - addIMGToIconDictionary(vpnKeySRC, name); - - // then - const appendIconDictionary = getAppendedIconDictionary(); - const icon = getIconSource(name); - - expect(appendIconDictionary.has(name)).to.be.true; - expect(icon).not.null; - }); - - }); - - describe('custom Icon Config', function() { - - it ('loads custom icons into Iconset and Dictionary', function() { - - // given - const presetIconConfigJSON = JSON.stringify(presetIconConfig); - - // when - localStorage.setItem(customConfigNameTag, 'customConfigName'); - localStorage.setItem(customConfigTag, presetIconConfigJSON); - localStorage.setItem(useCustomConfigTag, true); - - // then - const iconSet = getIconset(); - const actors = iconSet.actors; - const workObjects = iconSet.workObjects; - - - const appendIconDictionary = getAppendedIconDictionary(); - const iconPet = getIconSource('Pet'); - const iconStore = getIconSource('Store'); - - expect(actors).to.include('Pet'); - expect(workObjects).to.include('Store'); - - expect(appendIconDictionary.has('Pet')); - expect(appendIconDictionary.has('Store')); - - expect(iconPet).not.null; - expect(iconStore).not.null; - - localStorage.removeItem(customConfigNameTag); - localStorage.removeItem(customConfigTag); - localStorage.removeItem(useCustomConfigTag); - }); - }); -}); \ No newline at end of file diff --git a/test/spec/language/DomainStoryIdFactorySpec.js b/test/spec/language/DomainStoryIdFactorySpec.js deleted file mode 100644 index cdbba7b2..00000000 --- a/test/spec/language/DomainStoryIdFactorySpec.js +++ /dev/null @@ -1,46 +0,0 @@ -import DomainStoryIdFactory from '../../../app/domain-story-modeler/modeler/DomainStoryIdFactory'; - -describe('DomainStoryIdFactory', function() { - - it('generateId', function() { - const idFactory = new DomainStoryIdFactory(); - const res = idFactory.getId('shape'); - assert.notDeepEqual(res, 'shape_0001'); - }); - - it('generateId equal length', function() { - const idFactory = new DomainStoryIdFactory(); - const res = idFactory.getId('shape'); - const otherId = 'shape_0001'; - assert.deepEqual(res.length, otherId.length); - }); - - it('generateId short length 001', function() { - const idFactory = new DomainStoryIdFactory(); - const res = idFactory.getId('shape'); - const otherId = 'shape_001'; - assert.notDeepEqual(res.length, otherId.length); - }); - - it('generateId long length 00001', function() { - const idFactory = new DomainStoryIdFactory(); - const res = idFactory.getId('shape'); - const otherId = 'shape_00001'; - assert.notDeepEqual(res.length, otherId.length); - }); - - it('generateId unique iD amount 5k', function() { - this.timeout(0); - const idFactory = new DomainStoryIdFactory(); - const res = []; - for (let i=0; i<5000;i++) { - res[i] =idFactory.getId(''); - } - - for (let i=0; i subjectString.length - ) { - position = subjectString.length; - } - position -= searchString.length; - const lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - - let modeler; - - // spin up modeler with custom element, do this only once, using before each takes too long and triggers the timeout - modeler = new DomainStoryModeler({ container: container }); - modeler.importCustomElements(data, function(err) { - if (err) { - console.log(err); - } - }); - - it('should import domainStory element', function() { - - // given - let elementRegistry = modeler.get('elementRegistry'); - let domainStoryElements = modeler.getCustomElements(); - - // when - - modeler.importCustomElements(domainStoryElements); - const actorPersonImport = elementRegistry.get('shape_3050'); - - domainStoryElements = modeler.getCustomElements(); - - // then - expect(actorPersonImport).to.exist; - expect(domainStoryElements[0].id).to.contain(actorPersonImport.id); - }); - - it('should export domainStory element', function() { - - // given - let domainStoryElements = modeler.getCustomElements(); - - modeler.importCustomElements(domainStoryElements); - - // when - let newObject = domainStoryElements.slice(0); - newObject.push({ info: 'test' }); - const jsonExport = JSON.stringify(newObject); - - // then - expect(jsonExport).to.eql(jsonString); - }); - - // we have to rebuild the basic functionality of the import function from app.js, because we cannot get access to the HTML - it('should not import wrong file type', function() { - - // given - const testData = - '[{"type":"domainStory:actorPerson","name":"","id":"shape_0001","x":178,"y":133,"width":30,"height":30}]'; - let elementRegistry = modeler.get('elementRegistry'); - const input = { - name: 'thisIsAName.wrongF.dstiletype', - testData - }; - const reader = new FileReader(); - - // when - if (input.name.endsWith('.dst')) { - reader.onloadend = function(e) { - let text = e.target.result; - - let elements = JSON.parse(text); - elements.pop(); // to get rid of the info tag at the end - - modeler.importCustomElements(elements); - }; - - reader.readAsText(input); - } - - // then - const extraActor = elementRegistry.get('shape_0001'); - expect(extraActor).to.not.exist; - }); - }); - - describe('domainStory import export Test broken data', function() { - initTypeDictionaries(default_conf.actors, default_conf.workObjects); - - // since PhantomJS does not implement ES6 features we have to define our own string.includes and string.endsWith methods - if (!String.prototype.includes) { - String.prototype.includes = function() { - 'use strict'; - return String.prototype.indexOf.apply(this, arguments) !== -1; - }; - } - if (!String.prototype.endsWith) { - String.prototype.endsWith = function(searchString, position) { - const subjectString = this.toString(); - if ( - typeof position !== 'number' || - !isFinite(position) || - Math.floor(position) !== position || - position > subjectString.length - ) { - position = subjectString.length; - } - position -= searchString.length; - const lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function(searchElement, fromIndex) { - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - const o = Object(this); - // eslint-disable-next-line no-bitwise - const len = o.length >>> 0; - - if (len === 0) { - return false; - } - // eslint-disable-next-line no-bitwise - const n = fromIndex | 0; - let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - function sameValueZero(x, y) { - return ( - x === y || - (typeof x === 'number' && - typeof y === 'number' && - isNaN(x) && - isNaN(y)) - ); - } - while (k < len) { - if (sameValueZero(o[k], searchElement)) { - return true; - } - k++; - } - return false; - } - }); - } - - let modeler; - - // spin up modeler with custom element, do this only once, using before each takes too long and triggers the timeout - modeler = new DomainStoryModeler({ container: container }); - checkElementReferencesAndRepair(brokenData); - modeler.importCustomElements(brokenData, function(err) { - if (err) { - console.log(err); - } - }); - - it('should import domainStory element', function() { - - // given - let elementRegistry = modeler.get('elementRegistry'); - let domainStoryElements = modeler.getCustomElements(); - - // when - - modeler.importCustomElements(domainStoryElements); - const actorPersonImport = elementRegistry.get('connection_3004'); - - domainStoryElements = modeler.getCustomElements(); - - // then - expect(actorPersonImport).to.exist; - expect(domainStoryElements[2].id).to.contain(actorPersonImport.id); - }); - - it('should export domainStory element', function() { - - // given - let domainStoryElements = modeler.getCustomElements(); - - modeler.importCustomElements(domainStoryElements); - - // when - let newObject = domainStoryElements.slice(0); - newObject.push({ info: 'test' }); - const jsonExport = JSON.stringify(newObject); - - // then - expect(jsonExport).to.eql(jsonString2); - }); - }); - - describe('domainStory import Test old intricate data V_0_2_0', function() { - - // since PhantomJS does not implement ES6 features we have to define our own string.includes and string.endsWith methods - if (!String.prototype.includes) { - String.prototype.includes = function() { - 'use strict'; - return String.prototype.indexOf.apply(this, arguments) !== -1; - }; - } - if (!String.prototype.endsWith) { - String.prototype.endsWith = function(searchString, position) { - const subjectString = this.toString(); - if ( - typeof position !== 'number' || - !isFinite(position) || - Math.floor(position) !== position || - position > subjectString.length - ) { - position = subjectString.length; - } - position -= searchString.length; - const lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - - let modeler; - - // spin up modeler with custom element, do this only once, using before each takes too long and triggers the timeout - modeler = new DomainStoryModeler({ container: container }); - oldIntricateV_0_2_0_Data = updateCustomElementsPreviousv050( - oldIntricateV_0_2_0_Data - ); - modeler.importCustomElements(oldIntricateV_0_2_0_Data, function(err) { - if (err) { - console.log(err); - } - }); - - it('should import domainStory element', function() { - - // given - let elementRegistry = modeler.get('elementRegistry'); - let domainStoryElements = modeler.getCustomElements(); - - // when - - modeler.importCustomElements(domainStoryElements); - const actorPersonImport = elementRegistry.get('shape_6458'); - - domainStoryElements = modeler.getCustomElements(); - - // then - expect(actorPersonImport).to.exist; - }); - }); - - describe('domainStory import Test old intricate data V_0_3_0', function() { - - // since PhantomJS does not implement ES6 features we have to define our own string.includes and string.endsWith methods - if (!String.prototype.includes) { - String.prototype.includes = function() { - 'use strict'; - return String.prototype.indexOf.apply(this, arguments) !== -1; - }; - } - if (!String.prototype.endsWith) { - String.prototype.endsWith = function(searchString, position) { - const subjectString = this.toString(); - if ( - typeof position !== 'number' || - !isFinite(position) || - Math.floor(position) !== position || - position > subjectString.length - ) { - position = subjectString.length; - } - position -= searchString.length; - const lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - - let modeler; - - // spin up modeler with custom element, do this only once, using before each takes too long and triggers the timeout - modeler = new DomainStoryModeler({ container: container }); - const updatedData = updateCustomElementsPreviousv050( - oldIntricateV_0_3_0_Data - ); - modeler.importCustomElements(updatedData, function(err) { - if (err) { - console.log(err); - } - }); - - it('should import domainStory element', function() { - - // given - let elementRegistry = modeler.get('elementRegistry'); - let domainStoryElements = modeler.getCustomElements(); - - // when - - modeler.importCustomElements(domainStoryElements); - const actorPersonImport = elementRegistry.get('shape_8808'); - - domainStoryElements = modeler.getCustomElements(); - - // then - expect(actorPersonImport).to.exist; - }); - }); - - describe('domainStory import export Test intricate data V_0_5_0', function() { - - // since PhantomJS does not implement ES6 features we have to define our own string.includes and string.endsWith methods - if (!String.prototype.includes) { - String.prototype.includes = function() { - 'use strict'; - return String.prototype.indexOf.apply(this, arguments) !== -1; - }; - } - if (!String.prototype.endsWith) { - String.prototype.endsWith = function(searchString, position) { - const subjectString = this.toString(); - if ( - typeof position !== 'number' || - !isFinite(position) || - Math.floor(position) !== position || - position > subjectString.length - ) { - position = subjectString.length; - } - position -= searchString.length; - const lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - - let modeler; - - // spin up modeler with custom element, do this only once, using before each takes too long and triggers the timeout - modeler = new DomainStoryModeler({ container: container }); - modeler.importCustomElements(oldIntricateV0_5_0_Data, function(err) { - if (err) { - console.log(err); - } - }); - - it('should import domainStory element', function() { - - // given - let elementRegistry = modeler.get('elementRegistry'); - let domainStoryElements = modeler.getCustomElements(); - - // when - - modeler.importCustomElements(domainStoryElements); - const actorPersonImport = elementRegistry.get('shape_3387'); - - domainStoryElements = modeler.getCustomElements(); - - // then - expect(actorPersonImport).to.exist; - }); - - it('should export domainStory element', function() { - - // given - let domainStoryElements = modeler.getCustomElements(); - - modeler.importCustomElements(domainStoryElements); - - // when - let newObject = domainStoryElements.slice(0); - - newObject.push({ - info: 'Assumption: no line at box office, seats available, cash payment' - }); - newObject.push({ version: '0.5.0' }); - let jsonExport = '' + JSON.stringify(newObject); - - // then - let jsonElements = []; - - let index = jsonExport.indexOf('}') + 1; - while (index > 0) { - let substring = jsonExport.slice(1, index); - jsonElements.push(substring); - jsonExport = jsonExport.slice(index); - index = jsonExport.indexOf('}') + 1; - } - - jsonElements.forEach(element => { - if (element.includes('id')) { - let id = element.substring( - element.indexOf('id'), - element.indexOf('id') + 15 - ); - expect(intricateV0_5_0_JsonString.includes(id)).to.be.true; - } - }); - }); - }); - - describe('domainStory import export Test intricate data V_0_6_0', function() { - - // since PhantomJS does not implement ES6 features we have to define our own string.includes and string.endsWith methods - if (!String.prototype.includes) { - String.prototype.includes = function() { - 'use strict'; - return String.prototype.indexOf.apply(this, arguments) !== -1; - }; - } - if (!String.prototype.endsWith) { - String.prototype.endsWith = function(searchString, position) { - const subjectString = this.toString(); - if ( - typeof position !== 'number' || - !isFinite(position) || - Math.floor(position) !== position || - position > subjectString.length - ) { - position = subjectString.length; - } - position -= searchString.length; - const lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - - let modeler; - - // spin up modeler with custom element, do this only once, using before each takes too long and triggers the timeout - modeler = new DomainStoryModeler({ container: container }); - - const intricateV0_6_0_JSONStringWithCustomConfig = JSON.stringify({ - domain: JSON.stringify(intricateConfig), - dst: intricateV0_6_0_JSONString - }); - - readerFunction(intricateV0_6_0_JSONStringWithCustomConfig, null, modeler, DST_TYPE); - - it('should import domainStory element', function() { - - // given - let elementRegistry = modeler.get('elementRegistry'); - let domainStoryElements = modeler.getCustomElements(); - - // when - - modeler.importCustomElements(domainStoryElements); - const actorPersonImport = elementRegistry.get('shape_3387'); - - domainStoryElements = modeler.getCustomElements(); - - // then - expect(actorPersonImport).to.exist; - }); - - it('should export domainStory element', function() { - - // given - let domainStoryElements = modeler.getCustomElements(); - - modeler.importCustomElements(domainStoryElements); - - // when - let newObject = domainStoryElements.slice(0); - - newObject.push({ - info: 'Assumption: no line at box office, seats available, cash payment' - }); - newObject.push({ version: '0.5.0' }); - let jsonExport = '' + JSON.stringify(newObject); - - // then - let jsonElements = []; - - let index = jsonExport.indexOf('}') + 1; - while (index > 0) { - let substring = jsonExport.slice(1, index); - jsonElements.push(substring); - jsonExport = jsonExport.slice(index); - index = jsonExport.indexOf('}') + 1; - } - - jsonElements.forEach(element => { - if (element.includes('id')) { - let id = element.substring( - element.indexOf('id'), - element.indexOf('id') + 15 - ); - expect(intricateV0_6_0_JSONString.includes(id)).to.be.true; - } - }); - }); - }); -}); \ No newline at end of file diff --git a/test/spec/language/DomainStoryModelingSpec.js b/test/spec/language/DomainStoryModelingSpec.js deleted file mode 100644 index 1ed788aa..00000000 --- a/test/spec/language/DomainStoryModelingSpec.js +++ /dev/null @@ -1,272 +0,0 @@ -import { - bootstrapBpmnJS, - inject -} from '../../TestHelper'; - -import DomainStoryModeler from '../../../app/domain-story-modeler'; -import { assign } from 'min-dash'; -import { test_conf } from '../test_conf'; -import { CONNECTION } from '../../../app/domain-story-modeler/language/elementTypes'; -import { initTypeDictionaries } from '../../../app/domain-story-modeler/language/icon/dictionaries'; - -describe('domainStory modeling', function() { - - const xml = require('./diagram.bpmn'); - - beforeEach(bootstrapBpmnJS(DomainStoryModeler, xml)); - - - describe('custom elements', function() { - - beforeEach(inject(function(bpmnjs) { - - - const businessObject = { - - type: 'custom:triangle', - id: 'CustomTriangle_1', - }; - const customShape = { - businessObject: businessObject, - type: 'custom:triangle', - id: 'CustomTriangle_1', - x: 300, - y: 300, - height: 100, - width: 100 - }; - bpmnjs.addCustomElements([customShape]); - })); - - - it('should export custom element', inject( - function(bpmnjs, elementRegistry, modeling) { - - // type has to be registered for test - initTypeDictionaries(test_conf.actors); - - // given - const customElement = { - type: 'domainStory:actorPerson', - id: 'CustomActor_1', - x: 200, - y: 400, - height: 100, - width: 100 - }; - - const businessObject={ - type: 'domainStory:actorPerson', - id: 'CustomActor_1', - x: 150, - y: 350 - }; - - assign({ businessObject: businessObject }, customElement); - const position = { x: customElement.x, y: customElement.y }, - target = elementRegistry.get('Process_1'); - - modeling.createShape( - customElement, - position, - target - ); - - // when - const customElements = bpmnjs.getCustomElements(); - - // then - // we can only check for parts of our element since the create shape function adds parts to the shape, we cannot model here - expect(customElements[1]).to.contain(businessObject); - } - )); - - - it('should not resize custom shape', inject(function(elementRegistry, rules) { - - // given - const customElement = elementRegistry.get('CustomTriangle_1'); - - // when - const allowed = rules.allowed('resize', { shape: customElement }); - - // then - expect(allowed).to.be.false; - })); - - - it('should update custom element', inject(function(elementRegistry, modeling) { - - // given - const customElement = elementRegistry.get('CustomTriangle_1'); - - // when - modeling.moveShape(customElement, { x: 200, y: 50 }, customElement.parent); - - // then - expect(customElement.x).to.equal(500); - expect(customElement.y).to.equal(350); - })); - }); - - - describe('custom connections', function() { - - beforeEach(inject(function(bpmnjs) { - - const customShape = { - type: 'custom:triangle', - id: 'CustomTriangle_1', - x: 400, - y: 300 - }; - - bpmnjs.addCustomElements([customShape]); - })); - - - it('should export custom connection', inject( - function(bpmnjs, elementRegistry, modeling) { - - // given - const customShape = elementRegistry.get('CustomTriangle_1'), - taskShape = elementRegistry.get('Task_1'); - - modeling.connect(customShape, taskShape, { - type: CONNECTION, - id: 'CustomConnection_1' - }); - - // when - const customElements = bpmnjs.getCustomElements(); - - // then - const ids = customElements.map(function(element) { - return element.id; - }); - - expect(ids).to.include('CustomConnection_1'); - } - )); - - it('should not connect custom shape to start event', inject( - function(elementRegistry, rules) { - - // given - const customShape = elementRegistry.get('CustomTriangle_1'), - startEventShape = elementRegistry.get('StartEvent_1'); - - // when - const allowed = rules.allowed('connection.create', { - source: customShape, - target: startEventShape - }); - - // then - expect(allowed).to.be.false; - } - )); - - - it('should reconnect start', inject(function(bpmnjs, elementRegistry, modeling) { - - // given - const customShape = elementRegistry.get('CustomTriangle_1'), - taskShape = elementRegistry.get('Task_1'); - - const customConnection = modeling.connect(customShape, taskShape, { - type: CONNECTION - }); - - bpmnjs.addCustomElements([{ - type: 'doaminStory:actor', - id: 'CustomCircle_1', - x: 200, - y: 300 - }]); - - const customCircle = elementRegistry.get('CustomCircle_1'); - - // when - modeling.reconnectStart(customConnection, customCircle, { - x: customCircle.x + customCircle.width / 2, - y: customCircle.y + customCircle.height / 2 - }); - - // then - expect(customConnection.source).to.equal(customCircle); - expect(customConnection.target).to.equal(taskShape); - })); - - - it('should reconnect end', inject(function(bpmnjs, elementRegistry, modeling) { - - // given - const customShape = elementRegistry.get('CustomTriangle_1'), - taskShape1 = elementRegistry.get('Task_1'), - taskShape2 = elementRegistry.get('Task_2'); - - const customConnection = modeling.connect(customShape, taskShape1, { - type: CONNECTION - }); - - // when - modeling.reconnectEnd(customConnection, taskShape2, { - x: taskShape2.x + taskShape2.width / 2, - y: taskShape2.y + taskShape2.height / 2 - }); - - // then - expect(customConnection.source).to.equal(customShape); - expect(customConnection.target).to.equal(taskShape2); - })); - - - it('should update custom connection', inject(function(elementRegistry, modeling) { - - // given - const customElement = elementRegistry.get('CustomTriangle_1'), - taskShape = elementRegistry.get('Task_1'); - - const customConnection = modeling.connect(customElement, taskShape, { - type: CONNECTION - }); - - // when - modeling.moveShape(customElement, { x: 200, y: 50 }, customElement.parent); - - // then - - const waypoint1 = customConnection.businessObject.waypoints[0]; - const waypoint2 = customConnection.businessObject.waypoints[1]; - - expect(waypoint1.x).to.eql(600); - expect(waypoint1.y).to.eql(351); - expect(waypoint2.x).to.eql(354); - expect(waypoint2.y).to.eql(157); - })); - - - it('should remove deleted connection from _customElements', inject( - function(bpmnjs, elementRegistry, modeling) { - - // given - const customShape = elementRegistry.get('CustomTriangle_1'), - taskShape = elementRegistry.get('Task_1'), - customElements = bpmnjs.getCustomElements(); - - const customConnection = modeling.connect(customShape, taskShape, { - type: CONNECTION - }); - - // when - modeling.removeConnection(customConnection); - - // then - expect(customElements.length).to.equal(1); - } - )); - - }); - -}); diff --git a/test/spec/language/DownloadSpec.js b/test/spec/language/DownloadSpec.js deleted file mode 100644 index 24fefb54..00000000 --- a/test/spec/language/DownloadSpec.js +++ /dev/null @@ -1,94 +0,0 @@ -import { calculateWidthAndHeight } from '../../../app/domain-story-modeler/features/export/pngDownload'; - -describe('pngDownload', function() { - - it('calculateWidthAndHeight1 xLeft<0, xRight<0, yUp<0, yDown<0', function() { - const xLeft = - 10, - xRight = - 2, - yUp = -30, - yDown = -3; - - const controllwidth = 308, - controllheight = 327; - - const [height, width] = calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - assert.equal(controllheight, height); - assert.equal(controllwidth, width); - }); - - it('calculateWidthAndHeight2 xLeft<0, xRight<0, yUp<0, yDown<0', function() { - const xLeft = - 305, - xRight = - 2, - yUp = -306, - yDown = -2; - - const controllwidth = 303, - controllheight = 304; - - const [height, width] = calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - assert.equal(controllheight, height); - assert.equal(controllwidth, width); - }); - - it('calculateWidthAndHeight3 xLeft<0, xRight>0, yUp<0, yDown>0', function() { - const xLeft = -10, - xRight = 2, - yUp = -30, - yDown = 3; - - const controllwidth = 312, - controllheight = 333; - - const [height, width] = calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - assert.equal(controllheight, height); - assert.equal(controllwidth, width); - }); - - it('calculateWidthAndHeight4 xLeft<0, xRight>0, yUp<0, yDown>0', function() { - const xLeft = -300, - xRight = 2, - yUp = -330, - yDown = 3; - - const controllwidth = 302, - controllheight = 333; - - const [height, width] = calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - assert.equal(controllheight, height); - assert.equal(controllwidth, width); - }); - - it('calculateWidthAndHeight5 xLeft>0, xRight>0, yUp>0, yDown>0 all<300', function() { - const xLeft = 2, - xRight = 10, - yUp = 3, - yDown = 50; - - const controllwidth = 308, - controllheight = 347; - - const [height, width] = calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - assert.equal(controllheight, height); - assert.equal(controllwidth, width); - }); - - it('calculateWidthAndHeight6 xLeft>0, xRight>0, yUp>0, yDown>0 all<300', function() { - const xLeft = 2, - xRight = 320, - yUp = 3, - yDown = 360; - - const controllwidth = 318, - controllheight = 357; - - const [height, width] = calculateWidthAndHeight(xLeft, xRight, yUp, yDown); - - assert.equal(controllheight, height); - assert.equal(controllwidth, width); - }); -}); \ No newline at end of file diff --git a/test/spec/language/MathExtensionsSpec.js b/test/spec/language/MathExtensionsSpec.js deleted file mode 100644 index e04bd793..00000000 --- a/test/spec/language/MathExtensionsSpec.js +++ /dev/null @@ -1,20 +0,0 @@ -import '../../../app/domain-story-modeler/util/MathExtensions'; - -describe ('MathExtensions', function() { - - it('Math.angleBetween test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 20, - y: 0 - }; - - const res = Math.angleBetween(startPoint, endPoint); - assert.equal(res, 45); - assert.deepEqual(res, 45); - }); -}); \ No newline at end of file diff --git a/test/spec/language/collectionSpec.js b/test/spec/language/collectionSpec.js deleted file mode 100644 index 3391d19f..00000000 --- a/test/spec/language/collectionSpec.js +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -import { Dict, Entry } from '../../../app/domain-story-modeler/language/classes/collection'; - -const key1 = 'key'; -const key2 = 'another key'; - -const value1 = 'value'; -const value2 = 'another value'; - -const testObject = { - key: value1 -}; - -describe('Dict', function() { - it('creates Dictionary', function() { - - // when - const dict = new Dict(); - - // then - expect(dict == undefined).to.be.false; - expect(dict.length === 0); - expect(dict.size() === 0); - }); - - - it('adds Entries', function() { - - // given - const dict = new Dict(); - - // when - dict.add(value1, key1); - dict.set(key2, value2); - - // then - expect(dict.length === 2); - expect(dict.get(key1)).equals(value1); - expect(dict.get(key2)).equals(value2); - expect(dict.has(key1)); - expect(dict.has(key2)); - }); - - it('putEntry', function() { - - // given - const dict1 = new Dict(); - const entry = new Entry(value1, key1); - - // when - dict1.putEntry(entry); - - // then - expect(dict1.has(key1)); - expect(dict1.get(key1)).equals(value1); - }); - - it('addEach', function() { - - // given - const dict1 = new Dict(); - - // when - dict1.addEach(testObject); - - // then - expect(dict1.has(key1)); - }); - - it('appendDict', function() { - - // given - const dict1 = new Dict(); - const dict2 = new Dict(); - - dict1.set(key1, value1); - - // when - dict2.appendDict(dict1); - - // then - expect(dict2.get(key1)).equals(dict1.get(key1)); - }); - - it('keysArray', function() { - - // given - const dict1 = new Dict(); - - dict1.set(key1, value1); - - // when - const keys = dict1.keysArray(); - - // then - expect(keys.length === 1); - expect(keys[0]).equals(key1); - }); - - it('deletes entries', function() { - - // given - const dict1 = new Dict(); - - dict1.set(key1, value1); - dict1.set(key2, value2); - - // when - dict1.delete(key1); - - // then - expect(dict1.length === 1); - expect(dict1.get(key2)).to.not.be.undefined; - }); - - it('clears dict', function() { - - // given - const dict1 = new Dict(); - - dict1.set(key1, value1); - - // when - dict1.clear(); - - // then - expect(dict1.length === 0); - }); -}); \ No newline at end of file diff --git a/test/spec/language/dstJsons.js b/test/spec/language/dstJsons.js deleted file mode 100644 index 9cb0a6bd..00000000 --- a/test/spec/language/dstJsons.js +++ /dev/null @@ -1,178 +0,0 @@ -'use strict'; - - -export const jsonString = - '[{"type":"domainStory:actorPerson","name":"","id":"shape_3050","x":178,"y":133,"width":30,"height":30,"pickedColor":"black","$type":"Element","di":{},"$descriptor":{}},' + - '{"type":"domainStory:workObjectDocument","name":"","id":"shape_8681","x":508,"y":133,"width":30,"height":30,"pickedColor":"black","$type":"Element","di":{},"$descriptor":{}},' + - '{"type":"domainStory:activity","name":"","id":"connection_3004","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_3050","target":"shape_8681","pickedColor":"black","$type":"Element","di":{},"$descriptor":{}},' + - '{"info":"test"}]'; -export const jsonString2 = - '[{"type":"domainStory:actorPerson","name":"","id":"shape_3050","x":178,"y":133,"width":30,"height":30,"$type":"Element","di":{},"$descriptor":{},"pickedColor":"black"},' + - '{"type":"domainStory:workObjectDocument","name":"","id":"shape_8681","x":508,"y":133,"width":30,"height":30,"$type":"Element","di":{},"$descriptor":{},"pickedColor":"black"},' + - '{"type":"domainStory:activity","name":"","id":"connection_3004","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_3050","target":"shape_8681","$type":"Element","di":{},"$descriptor":{},"pickedColor":"black"},' + - '{"info":"test"}]'; - -export const brokenJsonString = - '[{"type":"domainStory:actorPerson","name":"","id":"shape_3050","x":178,"y":133,"width":30,"height":30},' + - '{"type":"domainStory:workObjectDocument","name":"","id":"shape_8681","x":508,"y":133,"width":30,"height":30},' + - '{"type":"domainStory:activity","name":"","id":"connection_0001","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_0001","target":"shape_0002"},' + - '{"type":"domainStory:activity","name":"","id":"connection_3004","number":1,"waypoints":[{"original":{"x":216,"y":171},"x":259,"y":171},{"original":{"x":546,"y":171},"x":508,"y":171}],"source":"shape_3050","target":"shape_8681"},' + - '{"info":"test"}]'; - -export const oldIntricateV_0_2_0_JsonString = - '[{"type":"domainStory:group","name":"ein gruppenname","id":"shape_9638","x":751,"y":330,"height":275,"width":525},' + - '{"type":"domainStory:actorPerson","name":"ein actor name","id":"shape_6458","x":547,"y":223},' + - '{"type":"domainStory:workObject","name":"","id":"shape_8970","x":681,"y":223},' + - '{"type":"domainStory:actorSystem","name":"","id":"shape_8118","x":976,"y":223},' + - '{"type":"domainStory:workObject","name":"","id":"shape_9327","x":987,"y":346},' + - '{"type":"domainStory:workObject","name":"ein workobject name","id":"shape_5439","x":681,"y":371},' + - '{"type":"domainStory:workObjectCall","name":"","id":"shape_5296","x":681,"y":506},' + - '{"type":"domainStory:workObject","name":"","id":"shape_8808","x":1193,"y":506},' + - '{"type":"domainStory:actorPerson","name":"","id":"shape_3974","x":987,"y":506},' + - '{"type":"domainStory:activity","name":"ein labeltext","id":"connection_6847","waypoints":[{"original":{"x":585,"y":261},"x":628,"y":261},{"original":{"x":719,"y":261},"x":681,"y":261}],"source":"shape_6458","target":"shape_8970","number":1},' + - '{"type":"domainStory:activity","name":"","id":"connection_0720","waypoints":[{"original":{"x":719,"y":261},"x":762,"y":261},{"original":{"x":1014,"y":261},"x":976,"y":261}],"source":"shape_8970","target":"shape_8118"},' + - '{"type":"domainStory:activity","name":"","id":"connection_9638","waypoints":[{"original":{"x":1014,"y":261},"x":1018,"y":308},{"original":{"x":1025,"y":384},"x":1022,"y":346}],"source":"shape_8118","target":"shape_9327","number":2},' + - '{"type":"domainStory:activity","name":"","id":"connection_8306","waypoints":[{"original":{"x":719,"y":261},"x":719,"y":308},{"original":{"x":719,"y":409},"x":719,"y":371}],"source":"shape_8970","target":"shape_5439"},' + - '{"type":"domainStory:activity","name":"","id":"connection_6550","waypoints":[{"original":{"x":719,"y":409},"x":719,"y":456},{"original":{"x":719,"y":544},"x":719,"y":506}],"source":"shape_5439","target":"shape_5296"},' + - '{"type":"domainStory:activity","name":"","id":"connection_0196","waypoints":[{"original":{"x":1025,"y":384},"x":1025,"y":431},{"original":{"x":1025,"y":544},"x":1025,"y":506}],"source":"shape_9327","target":"shape_3974"},' + - '{"type":"domainStory:activity","name":"","id":"connection_2991","waypoints":[{"original":{"x":1025,"y":544},"x":1072,"y":548},{"original":{"x":1226,"y":563},"x":1193,"y":560}],"source":"shape_3974","target":"shape_8808","number":3},' + - '{"type":"domainStory:activity","name":"","id":"connection_9263","waypoints":[{"original":{"x":719,"y":544},"x":764,"y":547},{"original":{"x":1005,"y":560},"x":987,"y":559}],"source":"shape_5296","target":"shape_3974"},' + - '{"type":"domainStory:textAnnotation","name":"","id":"shape_5750","x":1106,"y":382,"text":"ein weiteres kommentar","number":42},' + - '{"type":"domainStory:connection","name":"","id":"connection_6966","waypoints":[{"original":{"x":1025,"y":544},"x":1045,"y":522},{"original":{"x":1156,"y":397},"x":1143,"y":412}],"source":"shape_3974","target":"shape_5750"},' + - '{"type":"domainStory:textAnnotation","name":"","id":"shape_3367","x":1109,"y":201,"text":"ein kommentar","number":30},' + - '{"type":"domainStory:connection","name":"","id":"connection_0733","waypoints":[{"original":{"x":1014,"y":261},"x":1046,"y":251},{"original":{"x":1159,"y":216},"x":1111,"y":231}],"source":"shape_8118","target":"shape_3367"},' + - '{"info":"Eine Beschreibung"}]'; - -export const oldIntricateV_0_3_0_JsonString = - '[{"type":"domainStory:group","name":"ein gruppenname","id":"shape_9638","x":751,"y":330,"height":275,"width":525},' + - '{"type":"domainStory:actorPerson","name":"ein actor name","id":"shape_6458","x":547,"y":223},' + - '{"type":"domainStory:workObject","name":"","id":"shape_8970","x":681,"y":223},' + - '{"type":"domainStory:actorSystem","name":"","id":"shape_8118","x":976,"y":223},' + - '{"type":"domainStory:workObject","name":"","id":"shape_9327","x":987,"y":346},' + - '{"type":"domainStory:workObject","name":"ein workobject name","id":"shape_5439","x":681,"y":371},' + - '{"type":"domainStory:workObjectCall","name":"","id":"shape_5296","x":681,"y":506},' + - '{"type":"domainStory:workObject","name":"","id":"shape_8808","x":1193,"y":506},' + - '{"type":"domainStory:actorPerson","name":"","id":"shape_3974","x":987,"y":506},' + - '{"type":"domainStory:textAnnotation","name":"","id":"shape_5750","x":1106,"y":382,"text":"ein weiteres kommentar","number":42},' + - '{"type":"domainStory:textAnnotation","name":"","id":"shape_3367","x":1109,"y":201,"text":"ein kommentar","number":30},' + - '{"type":"domainStory:activity","name":"ein labeltext","id":"connection_6847","waypoints":[{"original":{"x":585,"y":261},"x":628,"y":261},{"original":{"x":719,"y":261},"x":681,"y":261}],"source":"shape_6458","target":"shape_8970","number":1},' + - '{"type":"domainStory:activity","name":"","id":"connection_0720","waypoints":[{"original":{"x":719,"y":261},"x":762,"y":261},{"original":{"x":1014,"y":261},"x":976,"y":261}],"source":"shape_8970","target":"shape_8118","number":null},' + - '{"type":"domainStory:activity","name":"","id":"connection_9638","waypoints":[{"original":{"x":1014,"y":261},"x":1018,"y":308},{"original":{"x":1025,"y":384},"x":1022,"y":346}],"source":"shape_8118","target":"shape_9327","number":2},' + - '{"type":"domainStory:activity","name":"","id":"connection_8306","waypoints":[{"original":{"x":719,"y":261},"x":719,"y":308},{"original":{"x":719,"y":409},"x":719,"y":371}],"source":"shape_8970","target":"shape_5439","number":null},' + - '{"type":"domainStory:activity","name":"","id":"connection_6550","waypoints":[{"original":{"x":719,"y":409},"x":719,"y":456},{"original":{"x":719,"y":544},"x":719,"y":506}],"source":"shape_5439","target":"shape_5296","number":null},' + - '{"type":"domainStory:activity","name":"","id":"connection_0196","waypoints":[{"original":{"x":1025,"y":384},"x":1025,"y":431},{"original":{"x":1025,"y":544},"x":1025,"y":506}],"source":"shape_9327","target":"shape_3974","number":null},' + - '{"type":"domainStory:activity","name":"","id":"connection_2991","waypoints":[{"original":{"x":1025,"y":544},"x":1072,"y":548},{"original":{"x":1226,"y":563},"x":1193,"y":560}],"source":"shape_3974","target":"shape_8808","number":3},' + - '{"type":"domainStory:activity","name":"","id":"connection_9263","waypoints":[{"original":{"x":719,"y":544},"x":764,"y":547},{"original":{"x":1005,"y":560},"x":987,"y":559}],"source":"shape_5296","target":"shape_3974","number":null},' + - '{"type":"domainStory:connection","name":"","id":"connection_6966","waypoints":[{"original":{"x":1025,"y":544},"x":1045,"y":522},{"original":{"x":1156,"y":397},"x":1143,"y":412}],"source":"shape_3974","target":"shape_5750"},' + - '{"type":"domainStory:connection","name":"","id":"connection_0733","waypoints":[{"original":{"x":1014,"y":261},"x":1046,"y":251},{"original":{"x":1159,"y":216},"x":1111,"y":231}],"source":"shape_8118","target":"shape_3367"},' + - '{"info":"Eine Beschreibung"}]'; - -export const intricateV0_5_0_JsonString = - '[{"type":"domainStory:actorPerson","name":"movie-goer","id":"shape_9977","x":214,"y":164},' + - '{"type":"domainStory:workObjectDocument","name":"schedule","id":"shape_3526","x":214,"y":-45},' + - '{"type":"domainStory:textAnnotation","name":"","id":"shape_1144","x":316,"y":-43,"text":"e.g. on billboard","number":27.874564459930312},' + - '{"type":"domainStory:actorPerson","name":"cashier","id":"shape_4658","x":672,"y":164},' + - '{"type":"domainStory:workObjectConversation","name":"movie, # of seats, time,..","id":"shape_5151","x":522,"y":-45},' + - '{"type":"domainStory:actorSystem","name":"ticket system","id":"shape_6138","x":920,"y":164},' + - '{"type":"domainStory:workObjectInfo","name":"available seats","id":"shape_8031","x":803,"y":-45},' + - '{"type":"domainStory:workObjectDocument","name":"available seats","id":"shape_3387","x":522,"y":77},' + - '{"type":"domainStory:workObjectConversation","name":"seats","id":"shape_7904","x":522,"y":190},' + - '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_8152","x":803,"y":99},' + - '{"type":"domainStory:workObjectInfo","name":"chosen seats","id":"shape_4138","x":1071,"y":164},' + - '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_9422","x":522,"y":283},' + - '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_5209","x":522,"y":390},' + - '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_2043","x":803,"y":264},' + - '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_7902","x":522,"y":475},' + - '{"type":"domainStory:activity","name":"chooses movie from","id":"connection_5202","number":"1","waypoints":[{"original":{"x":252,"y":202},"x":252,"y":164},{"original":{"x":252,"y":-7},"x":252,"y":40}],"source":"shape_9977","target":"shape_3526"},' + - '{"type":"domainStory:connection","name":"","id":"connection_7380","waypoints":[{"original":{"x":252,"y":-7},"x":288,"y":-14},{"original":{"x":366,"y":-29},"x":316,"y":-19}],"source":"shape_3526","target":"shape_1144"},' + - '{"type":"domainStory:activity","name":"asks for","id":"connection_7781","number":"2","waypoints":[{"original":{"x":252,"y":202},"x":277,"y":185},{"original":{"x":560,"y":-7},"x":522,"y":19}],"source":"shape_9977","target":"shape_5151"},' + - '{"type":"domainStory:activity","name":"","id":"connection_3361","number":null,"waypoints":[{"original":{"x":560,"y":-7},"x":602,"y":-7},{"x":697,"y":-7},{"original":{"x":697,"y":215},"x":697,"y":164}],"source":"shape_5151","target":"shape_4658"},' + - '{"type":"domainStory:activity","name":"in","id":"connection_5224","number":null,"waypoints":[{"original":{"x":841,"y":-7},"x":883,"y":-7},{"x":925,"y":-7},{"original":{"x":958,"y":202},"x":952,"y":164}],"source":"shape_8031","target":"shape_6138"},' + - '{"type":"domainStory:activity","name":"looks up","id":"connection_9708","number":3,"waypoints":[{"original":{"x":710,"y":202},"x":718,"y":167},{"x":755,"y":-7},{"original":{"x":809,"y":-7},"x":803,"y":-7}],"source":"shape_4658","target":"shape_8031"},' + - '{"type":"domainStory:activity","name":"shows","id":"connection_2251","number":4,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":180},{"original":{"x":560,"y":115},"x":593,"y":134}],"source":"shape_4658","target":"shape_3387"},' + - '{"type":"domainStory:activity","name":"to","id":"connection_6291","number":null,"waypoints":[{"original":{"x":560,"y":115},"x":522,"y":128},{"original":{"x":248,"y":219},"x":296,"y":203}],"source":"shape_3387","target":"shape_9977"},' + - '{"type":"domainStory:activity","name":"selects","id":"connection_8965","number":5,"waypoints":[{"original":{"x":252,"y":202},"x":294,"y":211},{"x":369,"y":228},{"original":{"x":560,"y":228},"x":522,"y":228}],"source":"shape_9977","target":"shape_7904"},' + - '{"type":"domainStory:activity","name":"","id":"connection_3680","number":null,"waypoints":[{"original":{"x":560,"y":228},"x":597,"y":222},{"original":{"x":713,"y":204},"x":672,"y":210}],"source":"shape_7904","target":"shape_4658"},' + - '{"type":"domainStory:activity","name":"issues","id":"connection_7770","number":6,"waypoints":[{"original":{"x":710,"y":202},"x":738,"y":188},{"original":{"x":841,"y":137},"x":803,"y":156}],"source":"shape_4658","target":"shape_8152"},' + - '{"type":"domainStory:activity","name":"","id":"connection_2904","number":null,"waypoints":[{"original":{"x":841,"y":137},"x":874,"y":156},{"original":{"x":954,"y":201},"x":920,"y":182}],"source":"shape_8152","target":"shape_6138"},' + - '{"type":"domainStory:activity","name":"reserves","id":"connection_8784","number":7,"waypoints":[{"original":{"x":958,"y":202},"x":1000,"y":202},{"original":{"x":1109,"y":202},"x":1071,"y":202}],"source":"shape_6138","target":"shape_4138"},' + - '{"type":"domainStory:activity","name":"tells","id":"connection_6154","number":8,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":232},{"original":{"x":560,"y":321},"x":584,"y":302}],"source":"shape_4658","target":"shape_9422"},' + - '{"type":"domainStory:activity","name":"","id":"connection_6050","number":null,"waypoints":[{"original":{"x":560,"y":321},"x":522,"y":321},{"x":469,"y":321},{"original":{"x":245,"y":216},"x":275,"y":230}],"source":"shape_9422","target":"shape_9977"},' + - '{"type":"domainStory:activity","name":"pays","id":"connection_7890","number":9,"waypoints":[{"original":{"x":252,"y":202},"x":265,"y":241},{"x":328,"y":428},{"original":{"x":560,"y":428},"x":522,"y":428}],"source":"shape_9977","target":"shape_5209"},' + - '{"type":"domainStory:activity","name":"","id":"connection_7262","number":null,"waypoints":[{"original":{"x":560,"y":428},"x":602,"y":428},{"x":661,"y":428},{"original":{"x":699,"y":239},"x":697,"y":249}],"source":"shape_5209","target":"shape_4658"},' + - '{"type":"domainStory:activity","name":"prints","id":"connection_8506","number":10,"waypoints":[{"original":{"x":710,"y":202},"x":739,"y":224},{"original":{"x":841,"y":302},"x":803,"y":273}],"source":"shape_4658","target":"shape_2043"},' + - '{"type":"domainStory:activity","name":"with","id":"connection_0126","number":null,"waypoints":[{"original":{"x":841,"y":302},"x":866,"y":284},{"original":{"x":971,"y":209},"x":920,"y":245}],"source":"shape_2043","target":"shape_6138"},' + - '{"type":"domainStory:activity","name":"hands over","id":"connection_1646","number":"11","waypoints":[{"original":{"x":710,"y":202},"x":710,"y":249},{"x":710,"y":513},{"original":{"x":560,"y":513},"x":603,"y":513}],"source":"shape_4658","target":"shape_7902"},' + - '{"info":"Assumption: no line at box office, seats available, cash payment"},' + - '{"version":"0.5.0"}]'; - -export const intricateConfig = { - actors: { - Person: - '', - Group: - '', - System: - '', - Pet: - '' - }, - workObjects: { - Conversation: - '', - Document: - '', - Folder: - '', - Call: - '', - Email: - '', - Info: - '', - Flag: - '' - } -}; - -export const intricateV0_6_0_JSONString = - '[' + - '{"type":"domainStory:workObjectFlag","name":"","id":"shape_2670","x":795,"y":-51},' + - '{"type":"domainStory:actorPet","name":"","id":"shape_4433","x":474,"y":-51},' + - '{"type":"domainStory:actorPerson","name":"movie-goer","id":"shape_9977","x":214,"y":164},' + - '{"type":"domainStory:workObjectDocument","name":"schedule","id":"shape_3526","x":214,"y":-45},' + - '{"type":"domainStory:textAnnotation","name":"","id":"shape_1144","x":316,"y":-43,"text":"e.g. on billboard","number":27.874564459930312},' + - '{"type":"domainStory:actorPerson","name":"cashier","id":"shape_4658","x":672,"y":164},' + - '{"type":"domainStory:workObjectConversation","name":"movie, # of seats, time,..","id":"shape_5151","x":522,"y":-45},' + - '{"type":"domainStory:actorSystem","name":"ticket system","id":"shape_6138","x":920,"y":164},' + - '{"type":"domainStory:workObjectInfo","name":"available seats","id":"shape_8031","x":803,"y":-45},' + - '{"type":"domainStory:workObjectDocument","name":"available seats","id":"shape_3387","x":522,"y":77},' + - '{"type":"domainStory:workObjectConversation","name":"seats","id":"shape_7904","x":522,"y":190},' + - '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_8152","x":803,"y":99},' + - '{"type":"domainStory:workObjectInfo","name":"chosen seats","id":"shape_4138","x":1071,"y":164},' + - '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_9422","x":522,"y":283},' + - '{"type":"domainStory:workObjectConversation","name":"price","id":"shape_5209","x":522,"y":390},' + - '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_2043","x":803,"y":264},' + - '{"type":"domainStory:workObjectDocument","name":"ticket","id":"shape_7902","x":522,"y":475},' + - '{"type":"domainStory:activity","name":"chooses movie from","id":"connection_5202","number":"1","waypoints":[{"original":{"x":252,"y":202},"x":252,"y":164},{"original":{"x":252,"y":-7},"x":252,"y":40}],"source":"shape_9977","target":"shape_3526"},' + - '{"type":"domainStory:connection","name":"","id":"connection_7380","waypoints":[{"original":{"x":252,"y":-7},"x":288,"y":-14},{"original":{"x":366,"y":-29},"x":316,"y":-19}],"source":"shape_3526","target":"shape_1144"},' + - '{"type":"domainStory:activity","name":"asks for","id":"connection_7781","number":"2","waypoints":[{"original":{"x":252,"y":202},"x":277,"y":185},{"original":{"x":560,"y":-7},"x":522,"y":19}],"source":"shape_9977","target":"shape_5151"},' + - '{"type":"domainStory:activity","name":"","id":"connection_3361","number":null,"waypoints":[{"original":{"x":560,"y":-7},"x":602,"y":-7},{"x":697,"y":-7},{"original":{"x":697,"y":215},"x":697,"y":164}],"source":"shape_5151","target":"shape_4658"},' + - '{"type":"domainStory:activity","name":"in","id":"connection_5224","number":null,"waypoints":[{"original":{"x":841,"y":-7},"x":883,"y":-7},{"x":925,"y":-7},{"original":{"x":958,"y":202},"x":952,"y":164}],"source":"shape_8031","target":"shape_6138"},' + - '{"type":"domainStory:activity","name":"looks up","id":"connection_9708","number":3,"waypoints":[{"original":{"x":710,"y":202},"x":718,"y":167},{"x":755,"y":-7},{"original":{"x":809,"y":-7},"x":803,"y":-7}],"source":"shape_4658","target":"shape_8031"},' + - '{"type":"domainStory:activity","name":"shows","id":"connection_2251","number":4,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":180},{"original":{"x":560,"y":115},"x":593,"y":134}],"source":"shape_4658","target":"shape_3387"},' + - '{"type":"domainStory:activity","name":"to","id":"connection_6291","number":null,"waypoints":[{"original":{"x":560,"y":115},"x":522,"y":128},{"original":{"x":248,"y":219},"x":296,"y":203}],"source":"shape_3387","target":"shape_9977"},' + - '{"type":"domainStory:activity","name":"selects","id":"connection_8965","number":5,"waypoints":[{"original":{"x":252,"y":202},"x":294,"y":211},{"x":369,"y":228},{"original":{"x":560,"y":228},"x":522,"y":228}],"source":"shape_9977","target":"shape_7904"},' + - '{"type":"domainStory:activity","name":"","id":"connection_3680","number":null,"waypoints":[{"original":{"x":560,"y":228},"x":597,"y":222},{"original":{"x":713,"y":204},"x":672,"y":210}],"source":"shape_7904","target":"shape_4658"},' + - '{"type":"domainStory:activity","name":"issues","id":"connection_7770","number":6,"waypoints":[{"original":{"x":710,"y":202},"x":738,"y":188},{"original":{"x":841,"y":137},"x":803,"y":156}],"source":"shape_4658","target":"shape_8152"},' + - '{"type":"domainStory:activity","name":"","id":"connection_2904","number":null,"waypoints":[{"original":{"x":841,"y":137},"x":874,"y":156},{"original":{"x":954,"y":201},"x":920,"y":182}],"source":"shape_8152","target":"shape_6138"},' + - '{"type":"domainStory:activity","name":"reserves","id":"connection_8784","number":7,"waypoints":[{"original":{"x":958,"y":202},"x":1000,"y":202},{"original":{"x":1109,"y":202},"x":1071,"y":202}],"source":"shape_6138","target":"shape_4138"},' + - '{"type":"domainStory:activity","name":"tells","id":"connection_6154","number":8,"waypoints":[{"original":{"x":710,"y":202},"x":672,"y":232},{"original":{"x":560,"y":321},"x":584,"y":302}],"source":"shape_4658","target":"shape_9422"},' + - '{"type":"domainStory:activity","name":"","id":"connection_6050","number":null,"waypoints":[{"original":{"x":560,"y":321},"x":522,"y":321},{"x":469,"y":321},{"original":{"x":245,"y":216},"x":275,"y":230}],"source":"shape_9422","target":"shape_9977"},' + - '{"type":"domainStory:activity","name":"pays","id":"connection_7890","number":9,"waypoints":[{"original":{"x":252,"y":202},"x":265,"y":241},{"x":328,"y":428},{"original":{"x":560,"y":428},"x":522,"y":428}],"source":"shape_9977","target":"shape_5209"},' + - '{"type":"domainStory:activity","name":"","id":"connection_7262","number":null,"waypoints":[{"original":{"x":560,"y":428},"x":602,"y":428},{"x":661,"y":428},{"original":{"x":699,"y":239},"x":697,"y":249}],"source":"shape_5209","target":"shape_4658"},' + - '{"type":"domainStory:activity","name":"prints","id":"connection_8506","number":10,"waypoints":[{"original":{"x":710,"y":202},"x":739,"y":224},{"original":{"x":841,"y":302},"x":803,"y":273}],"source":"shape_4658","target":"shape_2043"},' + - '{"type":"domainStory:activity","name":"with","id":"connection_0126","number":null,"waypoints":[{"original":{"x":841,"y":302},"x":866,"y":284},{"original":{"x":971,"y":209},"x":920,"y":245}],"source":"shape_2043","target":"shape_6138"},' + - '{"type":"domainStory:activity","name":"hands over","id":"connection_1646","number":"11","waypoints":[{"original":{"x":710,"y":202},"x":710,"y":249},{"x":710,"y":513},{"original":{"x":560,"y":513},"x":603,"y":513}],"source":"shape_4658","target":"shape_7902"},' + - '{"info":"Assumption: no line at box office, seats available, cash payment"},' + - '{"version":"0.5.0"}]'; diff --git a/test/spec/language/icon/iconConfigSpec.js b/test/spec/language/icon/iconConfigSpec.js deleted file mode 100644 index 5a0b2430..00000000 --- a/test/spec/language/icon/iconConfigSpec.js +++ /dev/null @@ -1,29 +0,0 @@ -import { appendSRCFile } from '../../../../app/domain-story-modeler/language/icon/iconConfig'; -import { appendedIcons } from '../../../../app/domain-story-modeler/language/icon/all_Icons'; -import { Dict } from '../../../../app/domain-story-modeler/language/classes/collection'; - -describe('iconConfig', function() { - it('appendSRCFile', function() { - - // Given - - let actors = { 'Pet': '' }, - workObjects = { 'Flag': '' }; - - let actorDict = new Dict(); - let workObjectDict = new Dict(); - - actorDict.addEach(actors); - workObjectDict.addEach(workObjects); - - actors = actorDict.keysArray(); - workObjects = workObjectDict.keysArray(); - - // When - appendSRCFile(actors, actorDict, workObjects, workObjectDict); - - // Then - expect(appendedIcons.has('Pet')); - expect(appendedIcons.has('Flag')); - }); -}); \ No newline at end of file diff --git a/test/spec/language/icon/iconDictionarySpec.js b/test/spec/language/icon/iconDictionarySpec.js deleted file mode 100644 index 0119c179..00000000 --- a/test/spec/language/icon/iconDictionarySpec.js +++ /dev/null @@ -1,21 +0,0 @@ -import { registerIcon, getIconForType, getIconDictionaryKeys } from '../../../../app/domain-story-modeler/language/icon/iconDictionary'; - -describe('iconDictionary', function() { - - it('can register Icon', function() { - - // Given - const iconName = 'testName'; - const src = 'testSource'; - - // When - registerIcon(iconName, src); - - // Then - const fromDict = getIconForType(iconName); - const keys = getIconDictionaryKeys(); - - expect(keys).to.contain(iconName); - expect(fromDict).to.exist; - }); -}); \ No newline at end of file diff --git a/test/spec/language/namingSpec.js b/test/spec/language/namingSpec.js deleted file mode 100644 index dfbd12cf..00000000 --- a/test/spec/language/namingSpec.js +++ /dev/null @@ -1,31 +0,0 @@ -import { getNameFromType } from '../../../app/domain-story-modeler/language/naming'; -import { ACTOR, WORKOBJECT } from '../../../app/domain-story-modeler/language/elementTypes'; - -describe('naming.js', function() { - it('StandardType ACTOR', function() { - - // When - const name = getNameFromType(ACTOR + 'test'); - - // Then - assert.equal(name, 'test'); - }); - - it('StandardType WORKOBJECT', function() { - - // When - const name = getNameFromType(WORKOBJECT + 'test'); - - // Then - assert.equal(name, 'test'); - }); - - it('NotStandardType', function() { - - // When - const name = getNameFromType(''); - - // Then - expect(name).to.be.undefined; - }); -}); \ No newline at end of file diff --git a/test/spec/test_conf.js b/test/spec/test_conf.js deleted file mode 100644 index e88b6331..00000000 --- a/test/spec/test_conf.js +++ /dev/null @@ -1,7 +0,0 @@ -export const test_conf = { - 'actors': [ - 'Person' - ], - 'workObjects': [ - ] -}; \ No newline at end of file diff --git a/test/spec/util/MathExtensionsSpec.js b/test/spec/util/MathExtensionsSpec.js deleted file mode 100644 index 2d54a32f..00000000 --- a/test/spec/util/MathExtensionsSpec.js +++ /dev/null @@ -1,30 +0,0 @@ -import '../../../app/domain-story-modeler/util/MathExtensions'; - -describe ('MathExtensions', function() { - - it('Math.angleBetween test', function() { - const startPoint = { - x: 10, - y: 10 - }; - - const endPoint = { - x: 20, - y: 0 - }; - - const res = Math.angleBetween(startPoint, endPoint); - assert.equal(res, 45); - assert.deepEqual(res, 45); - }); - - it('Math.degrees', function() { - const rad = 0.5; - const deg = 28.64788975654116; - - const converted = Math.degrees(rad); - - assert.equal(deg, converted); - assert.deepEqual(deg, converted); - }); -}); \ No newline at end of file diff --git a/test/spec/util/SanitizerSpec.js b/test/spec/util/SanitizerSpec.js deleted file mode 100644 index cf1c2cd8..00000000 --- a/test/spec/util/SanitizerSpec.js +++ /dev/null @@ -1,27 +0,0 @@ -import { sanitizeForDesktop } from '../../../app/domain-story-modeler/util/Sanitizer'; - -describe('Sanitizer', function() { - it('sanitize test', function() { - let res = sanitizeForDesktop('test'); - assert.equal(res, 'test'); - assert.deepEqual(res, 'test'); - }); - - it('sanitize te&st', function() { - let res = sanitizeForDesktop('te/st'); - assert.equal(res, 'test'); - assert.deepEqual(res, 'test'); - }); - - it('sanitize ', function() { - let res = sanitizeForDesktop(''); - assert.equal(res, 'test'); - assert.deepEqual(res, 'test'); - }); - - it('sanitize &test&', function() { - let res = sanitizeForDesktop('&test&'); - assert.equal(res, 'text id=test&test&test'); - assert.deepEqual(res, 'text id=test&test&test'); - }); -}); diff --git a/test/spec/util/TypeCheckSpec.js b/test/spec/util/TypeCheckSpec.js deleted file mode 100644 index eac7de13..00000000 --- a/test/spec/util/TypeCheckSpec.js +++ /dev/null @@ -1,142 +0,0 @@ -import { ACTOR, GROUP } from '../../../app/domain-story-modeler/language/elementTypes'; -import { isDomainStoryGroup, isInDomainStoryGroup, isDomainStoryElement, isDomainStory } from '../../../app/domain-story-modeler/util/TypeCheck'; - -const testElementDomainStoryActor = { - type: ACTOR, - businessObject: { - type: ACTOR - } -}; - -const testElementNotDomainStory = { - type: '', - businessObject: { - type: '' - } -}; - -const testElementDomainStoryGroup = { - type: GROUP -}; - -const testElementDomainStoryIsInGroup = { - parent : { - type: GROUP - } -}; - -const testElementDomainStoryIsNotInGroup = { - parent: { - type: '' - } -}; - -describe('Util TypeCheck', function() { - it('test isDomainStory true', function() { - - // Given - let testObject = testElementDomainStoryActor; - - // When - const check = isDomainStory(testObject); - - // Then - expect(check).to.be.true; - }); - - it('test isDomainStory false', function() { - - // Given - let testObject = testElementNotDomainStory; - - // When - const check = isDomainStory(testObject); - - // Then - expect(check).to.be.false; - }); - - it('test isDomainStoryGroup true', function() { - - // Given - let testObject = testElementDomainStoryGroup; - - // When - const check = isDomainStoryGroup(testObject); - - // Then - expect(check).to.be.true; - }); - - it('test isDomainStoryGroup false', function() { - - // Given - let testObject = testElementDomainStoryActor; - - // When - const check = isDomainStoryGroup(testObject); - - // Then - expect(check).to.be.false; - }); - - it('test isInDomainStoryGroup true', function() { - - // Given - let testObject = testElementDomainStoryIsInGroup; - - // When - const check = isInDomainStoryGroup(testObject); - - // Then - expect(check).to.be.true; - }); - - it('test isInDomainStoryGroup false', function() { - - // Given - let testObject = testElementDomainStoryIsNotInGroup; - - // When - const check = isInDomainStoryGroup(testObject); - - // Then - expect(check).to.be.false; - }); - - it('test isInDomainStoryGroup false No parent', function() { - - // Given - let testObject = testElementDomainStoryActor; - - // When - const check = isInDomainStoryGroup(testObject); - - // Then - expect(check).to.be.false; - }); - - it('test isDomainStoryElement true', function() { - - // Given - let testObject = testElementDomainStoryActor; - - // When - const check = isDomainStoryElement(testObject); - - // Then - expect(check).to.be.true; - }); - - it('test isDomainStoryElement false', function() { - - // Given - let testObject = testElementNotDomainStory; - - // When - const check = isDomainStoryElement(testObject); - - // Then - expect(check).to.be.false; - }); -}); \ No newline at end of file diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 00000000..ff396d4c --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": ["src/main.ts", "src/polyfills.ts"], + "include": ["src/**/*.d.ts"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..78b50a38 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "allowJs": true, + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "module": "es2020", + "lib": ["es2018", "dom"] + }, + "include": ["./src/**/*"], + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 00000000..669344f8 --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": ["jasmine"] + }, + "files": ["src/test.ts", "src/polyfills.ts"], + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] +} From 2f11ea8d521a0b899292ac309bff262a2a371dce Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Thu, 7 Oct 2021 11:15:43 +0200 Subject: [PATCH 002/242] audit fix --- .gitignore | 3 +- package-lock.json | 11451 +++++++++++++++++++++----------------------- package.json | 42 +- 3 files changed, 5425 insertions(+), 6071 deletions(-) diff --git a/.gitignore b/.gitignore index a953dfbd..1092d712 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ speed-measure-plugin*.json # IDEs and editors /.project +/.idea .classpath .c9/ *.launch @@ -43,5 +44,3 @@ testem.log # System Files .DS_Store Thumbs.db -.idea/runConfigurations.xml -.idea/prettier.xml diff --git a/package-lock.json b/package-lock.json index 19dab0d6..6181e643 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,581 +4,560 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@ampproject/remapping": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz", + "integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "1.0.0", + "sourcemap-codec": "1.4.8" + } + }, "@angular-devkit/architect": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.14.tgz", - "integrity": "sha512-965TVXuBtRb8RySgxRxUEO+YTd7mT0xiqVHSe+MHvMtUCmEE9vwRofFZl6axkK5ri4fiomiMnOVE19aw4spgNQ==", + "version": "0.1202.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.9.tgz", + "integrity": "sha512-s2NcFqZjsdYoR0vhJWLCwykF6hG7F0C5fJJs49i6IJMKj5Ai58z7d2IFYvD8nA60paMvjFS14OQ+E/FEEEZ88Q==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.14", - "rxjs": "6.6.3" - }, - "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "@angular-devkit/core": "12.2.9", + "rxjs": "6.6.7" } }, "@angular-devkit/build-angular": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.14.tgz", - "integrity": "sha512-SyX9SK3qfpk6xNIrxpxYi8zxP/cN2kny4I+XYbkKvgGiE3qhkrC/PRJE9OWj0sloekLD0CDfFWOvIiw3GMc4Tg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1102.14", - "@angular-devkit/build-optimizer": "0.1102.14", - "@angular-devkit/build-webpack": "0.1102.14", - "@angular-devkit/core": "11.2.14", - "@babel/core": "7.12.10", - "@babel/generator": "7.12.11", - "@babel/plugin-transform-async-to-generator": "7.12.1", - "@babel/plugin-transform-runtime": "7.12.10", - "@babel/preset-env": "7.12.11", - "@babel/runtime": "7.12.5", - "@babel/template": "7.12.7", - "@discoveryjs/json-ext": "0.5.2", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.9.tgz", + "integrity": "sha512-A8yddhGpUnrTcA4WCiUxwklFbfkNMfvlST5CT9VLVjz4MEwwOpdaNmIF39+NMr4XTgOBbP6Bq/t3ciIsB5+/Uw==", + "dev": true, + "requires": { + "@ampproject/remapping": "1.0.1", + "@angular-devkit/architect": "0.1202.9", + "@angular-devkit/build-optimizer": "0.1202.9", + "@angular-devkit/build-webpack": "0.1202.9", + "@angular-devkit/core": "12.2.9", + "@babel/core": "7.14.8", + "@babel/generator": "7.14.8", + "@babel/helper-annotate-as-pure": "7.14.5", + "@babel/plugin-proposal-async-generator-functions": "7.14.7", + "@babel/plugin-transform-async-to-generator": "7.14.5", + "@babel/plugin-transform-runtime": "7.14.5", + "@babel/preset-env": "7.14.8", + "@babel/runtime": "7.14.8", + "@babel/template": "7.14.5", + "@discoveryjs/json-ext": "0.5.3", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "11.2.14", + "@ngtools/webpack": "12.2.9", "ansi-colors": "4.1.1", - "autoprefixer": "10.2.4", "babel-loader": "8.2.2", "browserslist": "^4.9.1", - "cacache": "15.0.5", + "cacache": "15.2.0", "caniuse-lite": "^1.0.30001032", "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "6.3.2", - "core-js": "3.8.3", - "critters": "0.0.7", - "css-loader": "5.0.1", - "cssnano": "5.0.2", - "file-loader": "6.2.0", + "copy-webpack-plugin": "9.0.1", + "core-js": "3.16.0", + "critters": "0.0.10", + "css-loader": "6.2.0", + "css-minimizer-webpack-plugin": "3.0.2", + "esbuild": "0.13.4", + "esbuild-wasm": "0.13.4", "find-cache-dir": "3.3.1", - "glob": "7.1.6", + "glob": "7.1.7", "https-proxy-agent": "5.0.0", - "inquirer": "7.3.3", - "jest-worker": "26.6.2", + "inquirer": "8.1.2", "karma-source-map-support": "1.4.0", "less": "4.1.1", - "less-loader": "7.3.0", - "license-webpack-plugin": "2.3.11", + "less-loader": "10.0.1", + "license-webpack-plugin": "2.3.20", "loader-utils": "2.0.0", - "mini-css-extract-plugin": "1.3.5", + "mini-css-extract-plugin": "2.2.1", "minimatch": "3.0.4", - "open": "7.4.0", - "ora": "5.3.0", + "open": "8.2.1", + "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", - "pnp-webpack-plugin": "1.6.4", - "postcss": "8.2.15", - "postcss-import": "14.0.0", - "postcss-loader": "4.2.0", - "raw-loader": "4.0.2", - "regenerator-runtime": "0.13.7", + "piscina": "3.1.0", + "postcss": "8.3.6", + "postcss-import": "14.0.2", + "postcss-loader": "6.1.1", + "postcss-preset-env": "6.7.0", + "regenerator-runtime": "0.13.9", "resolve-url-loader": "4.0.0", - "rimraf": "3.0.2", - "rollup": "2.38.4", - "rxjs": "6.6.3", - "sass": "1.32.6", - "sass-loader": "10.1.1", - "semver": "7.3.4", - "source-map": "0.7.3", - "source-map-loader": "1.1.3", + "rxjs": "6.6.7", + "sass": "1.36.0", + "sass-loader": "12.1.0", + "semver": "7.3.5", + "source-map-loader": "3.0.0", "source-map-support": "0.5.19", - "speed-measure-webpack-plugin": "1.4.2", - "style-loader": "2.0.0", + "style-loader": "3.2.1", "stylus": "0.54.8", - "stylus-loader": "4.3.3", - "terser": "5.5.1", - "terser-webpack-plugin": "4.2.3", + "stylus-loader": "6.1.0", + "terser": "5.7.1", + "terser-webpack-plugin": "5.1.4", "text-table": "0.2.0", "tree-kill": "1.2.2", - "webpack": "4.44.2", - "webpack-dev-middleware": "3.7.2", + "tslib": "2.3.0", + "webpack": "5.50.0", + "webpack-dev-middleware": "5.0.0", "webpack-dev-server": "3.11.2", - "webpack-merge": "5.7.3", - "webpack-sources": "2.2.0", - "webpack-subresource-integrity": "1.5.2", - "worker-plugin": "5.0.0" + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "1.5.2" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", + "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.8", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.8", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.14.8", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.8", + "@babel/types": "^7.14.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", + "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", "dev": true, "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } } }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "tslib": "^1.9.0" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + } + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "esbuild": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz", + "integrity": "sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==", + "dev": true, + "optional": true, + "requires": { + "esbuild-android-arm64": "0.13.4", + "esbuild-darwin-64": "0.13.4", + "esbuild-darwin-arm64": "0.13.4", + "esbuild-freebsd-64": "0.13.4", + "esbuild-freebsd-arm64": "0.13.4", + "esbuild-linux-32": "0.13.4", + "esbuild-linux-64": "0.13.4", + "esbuild-linux-arm": "0.13.4", + "esbuild-linux-arm64": "0.13.4", + "esbuild-linux-mips64le": "0.13.4", + "esbuild-linux-ppc64le": "0.13.4", + "esbuild-openbsd-64": "0.13.4", + "esbuild-sunos-64": "0.13.4", + "esbuild-windows-32": "0.13.4", + "esbuild-windows-64": "0.13.4", + "esbuild-windows-arm64": "0.13.4" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", "dev": true } } }, "@angular-devkit/build-optimizer": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.14.tgz", - "integrity": "sha512-1j69rFqE6tPMO0lQvOH8ogF7vE+p+Ws1/OtdZKUkZPOerIbQ8A3n5wzCx6/ZzMVhBQ3sXNhaShb4b9/1YuwU/g==", + "version": "0.1202.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.9.tgz", + "integrity": "sha512-yDR7f2fRWzJdqa7U0eIYu5fCRIae3tcSsYE18UPiV5ypGK3talMIpZ1ibkklr9Nm9SAB6Js1/EdVBGB5jo3R9A==", "dev": true, "requires": { - "loader-utils": "2.0.0", "source-map": "0.7.3", - "tslib": "2.1.0", - "typescript": "4.1.5", - "webpack-sources": "2.2.0" + "tslib": "2.3.0", + "typescript": "4.3.5" }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.14.tgz", - "integrity": "sha512-+dJvzrwjbHY0bNr8fUDVbn4D4pAT/h1YVpGVyaoX7q66LN0x61zRC3e10gJ/Mr54l3yfc26M0OPD9KG8iZRbCA==", + "version": "0.1202.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.9.tgz", + "integrity": "sha512-UKVxFTRSyDpQDxM1yk1OJiynhbryrbsy+WgZ/gFcnZcrRGtrpAWOq+uMXfq05zET6CNqpOKBnxy9LSHAwXR5Ig==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1102.14", - "@angular-devkit/core": "11.2.14", - "rxjs": "6.6.3" - }, - "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "@angular-devkit/architect": "0.1202.9", + "rxjs": "6.6.7" } }, "@angular-devkit/core": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", - "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.9.tgz", + "integrity": "sha512-iPHQiga08bbryiVq3QYzwpuq9sNb8CB/MVy65MHJ0fuW1z6RYDeUh1EziitBBUT2d81KWKPO1wQ2DuUoxOg4mg==", "dev": true, "requires": { - "ajv": "6.12.6", + "ajv": "8.6.2", + "ajv-formats": "2.1.0", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", - "rxjs": "6.6.3", + "rxjs": "6.6.7", "source-map": "0.7.3" }, "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", "dev": true, "requires": { - "tslib": "^1.9.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true } } }, "@angular-devkit/schematics": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.3.tgz", - "integrity": "sha512-pbYOK8DK1V7YCzt8C3OckjQDGvCQqrLmg5kH+nLLAYOlkToRk3DBPIocuF9tCflNt6tEIkRJM4lPeDyy/z/GjQ==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.9.tgz", + "integrity": "sha512-OcMDCdlIxiir8XntrNXdXEPi9/8BRx54oYZeRosr0sJZlz4pPzsHs36t5uX2DURYYMkNNMaBnf2luUIC+77ZsA==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.3", + "@angular-devkit/core": "12.2.9", "ora": "5.4.1", "rxjs": "6.6.7" + } + }, + "@angular/animations": { + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.9.tgz", + "integrity": "sha512-duGhAuXw4OtgnWi5KqS/qnnWDtvG3jbPjjalTMhFPHHdUl7p3pJ2sM9WX7Fqp3QPnxBnQ+vdgQYbfUQ7c/g2cA==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/cdk": { + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.9.tgz", + "integrity": "sha512-9Wgj69iGAZ4teQqW/zPbVg2RGna+m9i3v0zkWGx/+Uo95rikJCUZBQM4bfeOe+bSJrS77jV5EisBWG7ayNUSzQ==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.2.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + } + } + }, + "@angular/cli": { + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.9.tgz", + "integrity": "sha512-aYAb6LkqIpKOZE8Kkhst5NNWpM4W1o1mmPTt6Nm6b/4wVLSC+mDp1IBCJSihDWysDetXA5J3kNJ4R2XnpHpIKw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1202.9", + "@angular-devkit/core": "12.2.9", + "@angular-devkit/schematics": "12.2.9", + "@schematics/angular": "12.2.9", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.2", + "ini": "2.0.0", + "inquirer": "8.1.2", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.5", + "npm-pick-manifest": "6.1.1", + "open": "8.2.1", + "ora": "5.4.1", + "pacote": "11.3.5", + "resolve": "1.20.0", + "semver": "7.3.5", + "symbol-observable": "4.0.0", + "uuid": "8.3.2" }, "dependencies": { - "@angular-devkit/core": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.3.tgz", - "integrity": "sha512-qt1hcX5zydGmCI9gEFcqTyJDcFEScSHPRqx0dlm61hCtBF75C2g7erSgb35zE3kZ7UE9UQY28JffFnwCj6uJhQ==", + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" + "ms": "2.1.2" } }, - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@angular/animations": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.3.tgz", - "integrity": "sha512-mX0NA05psPW97R9uVLvT3uuvFpZtlaeMVGsQyktyZvrbZVk89cr1DT4yHcwb8UNp9SMfN5prmq1l++Gkvu+c3w==", - "requires": { - "tslib": "^2.2.0" - } - }, - "@angular/cdk": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.3.tgz", - "integrity": "sha512-ahY3k5X3eoQlsCX/fYiwbe1z7nfmwY15EiLpcJ8YrnUoB+ZshPm8qFIZi6gwY4tsMmUN8OfsIGcUO701bdxFpg==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - } - } - }, - "@angular/cli": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.3.tgz", - "integrity": "sha512-QBudMbLc+m/Z7GZTskeStk8PUAIPYVYRDq+9dQyKmill56t4MdmTU/m8eteVUXWpQFdRwhqIz6L9hlsfJXzP6A==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1202.3", - "@angular-devkit/core": "12.2.3", - "@angular-devkit/schematics": "12.2.3", - "@schematics/angular": "12.2.3", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.2", - "ini": "2.0.0", - "inquirer": "8.1.2", - "jsonc-parser": "3.0.0", - "npm-package-arg": "8.1.5", - "npm-pick-manifest": "6.1.1", - "open": "8.2.1", - "ora": "5.4.1", - "pacote": "11.3.5", - "resolve": "1.20.0", - "semver": "7.3.5", - "symbol-observable": "4.0.0", - "uuid": "8.3.2" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1202.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.3.tgz", - "integrity": "sha512-AwLdofKggAiv0hThYe0v3MWOl94XJdJlgq/MXnYU/Ma/IeJDLlRa9WJuajL9AB//x5G+uH06smD3E4Ni8mv2ag==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.3", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.3.tgz", - "integrity": "sha512-qt1hcX5zydGmCI9gEFcqTyJDcFEScSHPRqx0dlm61hCtBF75C2g7erSgb35zE3kZ7UE9UQY28JffFnwCj6uJhQ==", - "dev": true, - "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "inquirer": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", - "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.3.0", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "rxjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", - "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", - "dev": true, - "requires": { - "tslib": "~2.1.0" - } - } - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "open": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", - "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -588,25 +567,25 @@ } }, "@angular/common": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.3.tgz", - "integrity": "sha512-AkOeknm35kzLqqh5dIz1143e3Q1MjWgi7THlY3StY63yphseQUUvGQSNHkDSIpfwBN8Mt+ZykKFjhY+cNFYt7w==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.9.tgz", + "integrity": "sha512-V7leBrq80CSJWHWVE3LEL6Z6onP2ibsITY3++86Uddz8AxzfOtNRslbs4/qCWc82nT7CIEn8a28NLP/BdOwNew==", "requires": { "tslib": "^2.2.0" } }, "@angular/compiler": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.3.tgz", - "integrity": "sha512-jlS7XUokGb4eH6aYEIanrq6a7ZxcMI9GmMr5tBAdIHusH3b40dcMpZVXIxoGzv1Ws47m2izDCrjWjkFKeXPavQ==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.9.tgz", + "integrity": "sha512-87Qn8HuQ+6ECUnapQxpgIvwuUs6i1oM6lmLSKrYe0/WpIzTabB30eXWCKfvqYrv516cMdrq+nLCIXJx1tPqzSw==", "requires": { "tslib": "^2.2.0" } }, "@angular/compiler-cli": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.3.tgz", - "integrity": "sha512-8yw13AqfRSY9YV4zb6PfuJizPa5/lh4DNbc6gQkw1Dmh/Af+U2bxrtZhQCgXWJAys1sd+PN/gTQOc7/YzDNVLQ==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.9.tgz", + "integrity": "sha512-jswNKFm3MNcY4oDO/8HcFLLVxDEcTOyqp9CeKzlbjBKb04Ntjaqpm9CKzlxLOtJJj9BSMHTz1CjE0hSNv76NPg==", "dev": true, "requires": { "@babel/core": "^7.8.6", @@ -684,9 +663,9 @@ "dev": true }, "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -707,53 +686,59 @@ } }, "@angular/core": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.3.tgz", - "integrity": "sha512-gv3FJPiwDKugySzPepBzXrbr8HxeK2enotEmducNv3IdtGZPS0/qrbDVt7W0woRt7BGAeWaZKEaPoFzMZeEbCw==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.9.tgz", + "integrity": "sha512-RgUmn0YM4GMcViTEkWxDVGCyz8+subF+98dJie+bwJszATMxRK2TSINEg2X/Y0LgNxpRt4mKzIK2kz62oaDH7g==", "requires": { "tslib": "^2.2.0" } }, "@angular/forms": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.3.tgz", - "integrity": "sha512-euc2omQ8YVRLjmJDGXRBNLLTzOQZjLYn/DxB3yChWNcsiOZoqhBQprgioQZt4GnCoQJyBH9iQZENnHOZk0TD1w==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.9.tgz", + "integrity": "sha512-DugLX9h/hmphjdx0wGOp9koEpzFZpcMiYXfYO2rLyzc1NwopAcbSJTCvU+adfShZgh/b5v+7rb5n10JROj/ODw==", "requires": { "tslib": "^2.2.0" } }, "@angular/material": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.3.tgz", - "integrity": "sha512-kwCTYPckOsrLU9ukM9c3E4EnJJu6PMEymn/Xb6QKAo+0qwaV527QrWl6EW1IgcDpUvEB5UNbxXTU32wa+LhtVA==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.9.tgz", + "integrity": "sha512-+eM67RF038S56m3wsj37h0PyyRD18cQ8V2zmKG1UezH0nnosbmCAwzH9BfcNiIB+/V+k5QMJ/JVu5MjDQqX37w==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.3.tgz", - "integrity": "sha512-dPA9JDZtxBb4VvhFFMh0sQzTfMcUXYxe/jY1rsKqYJVbIW6NZ1kj9/00acxTU0QdrW4xv5TlwgOdTYck6//C4g==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.9.tgz", + "integrity": "sha512-moO5Fz4b15EWYQthOaQThmy0gm/d5W/+9RmCiZs2ZHiVjuC358lnFy626VdkZmJ/MLwMwqHpyQS9JhCYOZGOdw==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser-dynamic": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.3.tgz", - "integrity": "sha512-K31+QW6ubquSXkWaf54TXIkV5aoRLwZ5aFo8TEAXbmddgwxhWF7egCB5j0pajq5QTxyDnXns9140HNcqg4QLcw==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.9.tgz", + "integrity": "sha512-bBNsq2rrL08IaVCps9j54iu3Xoxf1PkjtbEyP5EqXbjccsF7KDM32+5Cjjf0AwYtzaWbjXPSP7awAXpCCsqSdA==", "requires": { "tslib": "^2.2.0" } }, "@angular/router": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.3.tgz", - "integrity": "sha512-6qKQzS7WVx1J0ue3rqNlr2h/F0Kar6JNVrbDc+hFXyeHhdtk3Wg8Xfk4LxWBqgs6d+6HlOPIzMM4QzydVbEyRQ==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.9.tgz", + "integrity": "sha512-Qh7Ugh6N7PIK4+ydRPHiKy8Q3wlB/ieXVyqYgkNfGFZ+QtNHpWgWBUXJuGPnmKk0Yn02EwSPOuPWEHV92rayhw==", "requires": { "tslib": "^2.2.0" } }, + "@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, "@babel/code-frame": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", @@ -764,9 +749,9 @@ } }, "@babel/compat-data": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", - "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", "dev": true }, "@babel/core": { @@ -835,58 +820,58 @@ }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", - "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", + "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-explode-assignable-expression": "^7.15.4", + "@babel/types": "^7.15.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-compilation-targets": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", - "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.5", + "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", "browserslist": "^4.16.6", "semver": "^6.3.0" @@ -901,102 +886,111 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", - "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", + "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -1011,46 +1005,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -1072,28 +1066,52 @@ "regexpu-core": "^4.7.1" } }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "@babel/helper-explode-assignable-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", - "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", + "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } @@ -1133,27 +1151,27 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } @@ -1222,29 +1240,38 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", - "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", + "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-wrap-function": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-wrap-function": "^7.15.4", + "@babel/types": "^7.15.4" }, "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } @@ -1272,27 +1299,27 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", - "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", + "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } @@ -1320,70 +1347,70 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", - "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", + "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-function-name": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -1398,46 +1425,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -1490,6 +1517,17 @@ "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", "dev": true }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", + "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } + }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", @@ -1511,6 +1549,17 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", + "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, "@babel/plugin-proposal-dynamic-import": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", @@ -1572,16 +1621,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", - "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", + "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.5" + "@babel/plugin-transform-parameters": "^7.15.4" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -1615,6 +1664,45 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", + "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", @@ -1643,6 +1731,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -1724,6 +1821,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", @@ -1743,14 +1849,41 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-block-scoped-functions": { @@ -1763,112 +1896,121 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", - "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", + "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", - "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", + "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", "globals": "^11.1.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -1883,46 +2025,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -1982,9 +2124,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", - "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", + "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -2001,38 +2143,38 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -2047,29 +2189,29 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } } @@ -2105,122 +2247,122 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -2235,46 +2377,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -2287,134 +2429,134 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", - "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", + "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-simple-access": "^7.15.4", "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -2429,46 +2571,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -2481,135 +2623,135 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", - "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", + "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -2624,46 +2766,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -2686,122 +2828,122 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -2816,46 +2958,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -2868,9 +3010,9 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", - "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", + "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.14.5" @@ -2896,88 +3038,88 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -2992,46 +3134,46 @@ } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", "dev": true }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", "dev": true, "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" } }, @@ -3044,9 +3186,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", - "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", + "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -3080,20 +3222,48 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", - "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", + "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "semver": "^5.5.1" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -3108,13 +3278,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", - "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", + "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" } }, "@babel/plugin-transform-sticky-regex": { @@ -3164,83 +3334,106 @@ } }, "@babel/preset-env": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", - "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.11", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz", + "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.11", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.10", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.11", - "core-js-compat": "^3.8.0", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.8", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", + "semver": "^6.3.0" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -3259,9 +3452,9 @@ } }, "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", + "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -3324,16 +3517,16 @@ "to-fast-properties": "^2.0.0" } }, - "@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, - "@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "@discoveryjs/json-ext": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", + "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", "dev": true }, "@istanbuljs/schema": { @@ -3342,6 +3535,12 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jridgewell/resolve-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz", + "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==", + "dev": true + }, "@jsdevtools/coverage-istanbul-loader": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", @@ -3356,15 +3555,10 @@ } }, "@ngtools/webpack": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.14.tgz", - "integrity": "sha512-6q57tEWtUJRsxfTKE19L20iXvNesfVy8hrVdyzVk64DZQh0lIl4/xZT4d5bJCWOuQQDaAeZK4YbEFcYJn7k1yw==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.14", - "enhanced-resolve": "5.7.0", - "webpack-sources": "2.2.0" - } + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.9.tgz", + "integrity": "sha512-IQkzvompjLdWbZ+33crtyVF8huF53C36k1FNFdq3x2j4Kw4ssDd6K9fq3aZpRCK0J8O79HJ5j4QH6ZtWjwajLg==", + "dev": true }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -3383,36 +3577,15 @@ "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, - "@npmcli/fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz", - "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "@npmcli/git": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", @@ -3429,15 +3602,6 @@ "which": "^2.0.2" }, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3470,9 +3634,9 @@ } }, "@npmcli/node-gyp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", - "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", "dev": true }, "@npmcli/promise-spawn": { @@ -3497,48 +3661,14 @@ } }, "@schematics/angular": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.3.tgz", - "integrity": "sha512-MyInM0/Dg1geP5eYx370IX6l70ZTtGq7QIt9CFBViHlX4BWNmXq5bbJIPYJ/FWwT+zhSK7zp5AcyDKg6PWqh/Q==", + "version": "12.2.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.9.tgz", + "integrity": "sha512-IIczXVwegREekub0+bBxOc0dDL7j8p5rG6rB/2btJRR+tg04milP+BkvnQgksmIkW1OcZ5beRSB37R3jY/W/PA==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.3", - "@angular-devkit/schematics": "12.2.3", + "@angular-devkit/core": "12.2.9", + "@angular-devkit/schematics": "12.2.9", "jsonc-parser": "3.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.3.tgz", - "integrity": "sha512-qt1hcX5zydGmCI9gEFcqTyJDcFEScSHPRqx0dlm61hCtBF75C2g7erSgb35zE3kZ7UE9UQY28JffFnwCj6uJhQ==", - "dev": true, - "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } } }, "@tootallnate/once": { @@ -3548,9 +3678,9 @@ "dev": true }, "@trysound/sax": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", - "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, "@types/component-emitter": { @@ -3571,10 +3701,36 @@ "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", "dev": true }, + "@types/eslint": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -3582,27 +3738,27 @@ } }, "@types/jasmine": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.8.2.tgz", - "integrity": "sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.9.1.tgz", + "integrity": "sha512-PVpjh8S8lqKFKurWSKdFATlfBHGPzgy0PoDdzQ+rr78jTQ0aacyh9YndzZcAUPxhk4kRujItFFGQdUJ7flHumw==", "dev": true }, "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "@types/node": { - "version": "12.20.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.21.tgz", - "integrity": "sha512-Qk7rOvV2A4vNgXNS88vEvbJE1NDFPCQ8AU+pNElrU2bA4yrRDef3fg3SUe+xkwyin3Bpg/Xh5JkNWTlsOcS2tA==" + "version": "12.20.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", + "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==" }, "@types/parse-json": { "version": "4.0.0", @@ -3623,9 +3779,9 @@ "dev": true }, "@types/webpack-sources": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", - "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", + "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", "dev": true, "requires": { "@types/node": "*", @@ -3642,177 +3798,148 @@ } }, "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -3857,9 +3984,15 @@ } }, "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true }, "adjust-sourcemap-loader": { @@ -3936,9 +4069,9 @@ }, "dependencies": { "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -3989,9 +4122,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -4026,9 +4159,9 @@ "dev": true }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -4134,53 +4267,6 @@ "safer-buffer": "~2.1.0" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -4233,29 +4319,48 @@ "dev": true }, "autoprefixer": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", - "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, "requires": { - "browserslist": "^4.16.1", - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "fraction.js": "^4.0.13", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "axobject-query": { @@ -4310,6 +4415,44 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.16.2" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -4416,16 +4559,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -4446,18 +4579,6 @@ "minimist": "^1.2.0" } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -4520,9 +4641,9 @@ "dev": true }, "bpmn-js": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-8.7.2.tgz", - "integrity": "sha512-c/w2HMTFPgENCyeVtfwvur4dTMSpXQ9ijLa/SpT9nFvNl5cv8Pk0MAr1vzYoGKWnbgMyIkgj9x0ajeL/lcVUsQ==", + "version": "8.7.3", + "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-8.7.3.tgz", + "integrity": "sha512-4Xni4dApvVA8Iz3K9y1peE8oxmziAKY5Oi8BSpFRC2fbL8KEU2m4Dpz+yVdKBVGSTGbQdm1HP2YIb341UBtaDA==", "requires": { "bpmn-moddle": "^7.1.2", "css.escape": "^1.5.1", @@ -4565,104 +4686,17 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "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": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", + "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001264", + "electron-to-chromium": "^1.3.857", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^1.1.77", + "picocolors": "^0.2.1" } }, "browserstack": { @@ -4726,18 +4760,6 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -4751,9 +4773,9 @@ "dev": true }, "cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", + "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", "dev": true, "requires": { "@npmcli/move-file": "^1.0.1", @@ -4770,7 +4792,7 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.0", + "ssri": "^8.0.1", "tar": "^6.0.2", "unique-filename": "^1.1.1" } @@ -4809,9 +4831,9 @@ "dev": true }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caniuse-api": { @@ -4827,9 +4849,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001239", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz", - "integrity": "sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==", + "version": "1.0.30001265", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", + "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", "dev": true }, "canonical-path": { @@ -4889,16 +4911,6 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "circular-dependency-plugin": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", @@ -4944,9 +4956,9 @@ } }, "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, "cli-width": { @@ -5115,15 +5127,15 @@ "dev": true }, "colord": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.0.1.tgz", - "integrity": "sha512-vm5YpaWamD0Ov6TSG0GGmUIwstrWcfKQV/h2CmbR7PbNu41+qdB5PW9lpzhjedrpm08uuYvcXi0Oel1RLZIJuA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", + "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==", "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "colors": { @@ -5211,44 +5223,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -5284,24 +5258,12 @@ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -5347,40 +5309,6 @@ "is-what": "^3.12.0" } }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -5388,24 +5316,38 @@ "dev": true }, "copy-webpack-plugin": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", - "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", + "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", "dev": true, "requires": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", + "fast-glob": "^3.2.5", + "glob-parent": "^6.0.0", + "globby": "^11.0.3", "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", + "p-limit": "^3.1.0", "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" + "serialize-javascript": "^6.0.0" }, "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5416,47 +5358,31 @@ } }, "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } } } }, "core-js": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", - "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz", + "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==", "dev": true }, "core-js-compat": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", - "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.2.tgz", + "integrity": "sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.17.3", "semver": "7.0.0" }, "dependencies": { @@ -5485,9 +5411,9 @@ } }, "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -5497,55 +5423,10 @@ "yaml": "^1.10.0" } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "critters": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", - "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.10.tgz", + "integrity": "sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -5565,9 +5446,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5627,25 +5508,6 @@ } } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, "css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -5665,51 +5527,149 @@ } } }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true - }, - "css-declaration-sorter": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", - "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", "dev": true, "requires": { "timsort": "^0.3.0" } }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "css-loader": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", - "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz", + "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==", "dev": true, "requires": { - "camelcase": "^6.2.0", - "cssesc": "^3.0.0", - "icss-utils": "^5.0.0", - "loader-utils": "^2.0.0", - "postcss": "^8.1.4", + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "p-limit": "^3.0.2", + "postcss": "^8.3.5", "schema-utils": "^3.0.0", - "semver": "^7.3.2" + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" }, "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -5755,6 +5715,33 @@ } } }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "css-select": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", @@ -5816,6 +5803,12 @@ "through": "X.X.X" } }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", + "dev": true + }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -5823,20 +5816,21 @@ "dev": true }, "cssnano": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.2.tgz", - "integrity": "sha512-8JK3EnPsjQsULme9/e5M2hF564f/480hwsdcHvQ7ZtAIMfQ1O3SCfs+b8Mjf5KJxhYApyRshR2QSovEJi2K72Q==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "cssnano-preset-default": "^5.0.1", - "is-resolvable": "^1.1.0" + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", - "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", "dev": true, "requires": { "css-declaration-sorter": "^6.0.3", @@ -5851,7 +5845,7 @@ "postcss-merge-longhand": "^5.0.2", "postcss-merge-rules": "^5.0.2", "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", "postcss-minify-params": "^5.0.1", "postcss-minify-selectors": "^5.1.0", "postcss-normalize-charset": "^5.0.1", @@ -5891,12 +5885,6 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, "damerau-levenshtein": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", @@ -6114,16 +6102,6 @@ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -6143,9 +6121,9 @@ "dev": true }, "diagram-js": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-7.3.1.tgz", - "integrity": "sha512-Z4upYM5JbJc29LPp6r+g6x3/CIDDw7bRtYl/HItdippix/atrIx8PZKCtJTGB2NTYGzTWb3GAj7E/oLD0i5C4Q==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-7.4.1.tgz", + "integrity": "sha512-y21FjCo9QZJmH0g20ELYGv9+ps5AV52JEhsUroT4zJCwd28stjICGJMK/1VDnHhRqijjOp9Q/SLSwIa6k5/RlQ==", "requires": { "css.escape": "^1.5.1", "didi": "^5.2.1", @@ -6178,25 +6156,6 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -6254,12 +6213,6 @@ "entities": "^2.0.0" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, "domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", @@ -6267,9 +6220,9 @@ "dev": true }, "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -6281,9 +6234,9 @@ "integrity": "sha512-x18nuiDHMCZGXr4KJSRMf/TWYtiaRo6RX8KN9fEbW54mvbQ6pieUuerC2ahBg+kEp1wycFj8MPUI0WkIOw5E9w==" }, "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -6296,44 +6249,6 @@ "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==" }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6351,34 +6266,11 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.756", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.756.tgz", - "integrity": "sha512-WsmJym1TMeHVndjPjczTFbnRR/c4sbzg8fBFtuhlb2Sru3i/S1VGpzDSrv/It8ctMU2bj8G7g7/O3FzYMGw6eA==", + "version": "1.3.861", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", + "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", "dev": true }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6467,9 +6359,9 @@ } }, "enhanced-resolve": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", - "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -6518,6 +6410,12 @@ "is-arrayish": "^0.2.1" } }, + "es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -6533,6 +6431,124 @@ "es6-promise": "^4.0.3" } }, + "esbuild-android-arm64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.4.tgz", + "integrity": "sha512-elDJt+jNyoHFId0/dKsuVYUPke3EcquIyUwzJCH17a3ERglN3A9aMBI5zbz+xNZ+FbaDNdpn0RaJHCFLbZX+fA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.4.tgz", + "integrity": "sha512-zJQGyHRAdZUXlRzbN7W+7ykmEiGC+bq3Gc4GxKYjjWTgDRSEly98ym+vRNkDjXwXYD3gGzSwvH35+MiHAtWvLA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.4.tgz", + "integrity": "sha512-r8oYvAtqSGq8HNTZCAx4TdLE7jZiGhX9ooGi5AQAey37MA6XNaP8ZNlw9OCpcgpx3ryU2WctXwIqPzkHO7a8dg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.4.tgz", + "integrity": "sha512-u9DRGkn09EN8+lCh6z7FKle7awi17PJRBuAKdRNgSo5ZrH/3m+mYaJK2PR2URHMpAfXiwJX341z231tSdVe3Yw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.4.tgz", + "integrity": "sha512-q3B2k68Uf6gfjATjcK16DqxvjqRQkHL8aPoOfj4op+lSqegdXvBacB1d8jw8PxbWJ8JHpdTLdAVUYU80kotQXA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.4.tgz", + "integrity": "sha512-UUYJPHSiKAO8KoN3Ls/iZtgDLZvK5HarES96aolDPWZnq9FLx4dIHM/x2z4Rxv9IYqQ/DxlPoE2Co1UPBIYYeA==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.4.tgz", + "integrity": "sha512-+RnohAKiiUW4UHLGRkNR1AnENW1gCuDWuygEtd4jxTNPIoeC7lbXGor7rtgjj9AdUzFgOEvAXyNNX01kJ8NueQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.4.tgz", + "integrity": "sha512-BH5gKve4jglS7UPSsfwHSX79I5agC/lm4eKoRUEyo8lwQs89frQSRp2Xup+6SFQnxt3md5EsKcd2Dbkqeb3gPA==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.4.tgz", + "integrity": "sha512-+A188cAdd6QuSRxMIwRrWLjgphQA0LDAQ/ECVlrPVJwnx+1i64NjDZivoqPYLOTkSPIKntiWwMhhf0U5/RrPHQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.4.tgz", + "integrity": "sha512-0xkwtPaUkG5xMTFGaQPe1AadSe5QAiQuD4Gix1O9k5Xo/U8xGIkw9UFUTvfEUeu71vFb6ZgsIacfP1NLoFjWNw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.4.tgz", + "integrity": "sha512-E1+oJPP7A+j23GPo3CEpBhGwG1bni4B8IbTA3/3rvzjURwUMZdcN3Fhrz24rnjzdLSHmULtOE4VsbT42h1Om4Q==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.4.tgz", + "integrity": "sha512-xEkI1o5HYxDzbv9jSox0EsDxpwraG09SRiKKv0W8pH6O3bt+zPSlnoK7+I7Q69tkvONkpIq5n2o+c55uq0X7cw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.4.tgz", + "integrity": "sha512-bjXUMcODMnB6hQicLBBmmnBl7OMDyVpFahKvHGXJfDChIi5udiIRKCmFUFIRn+AUAKVlfrofRKdyPC7kBsbvGQ==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.4.tgz", + "integrity": "sha512-2dN7njr9/2QzKLqbTEgXr73vDbSqffdJMv4EfaMQoy04cej0owbGHH5apPgED0wN9I5e7sBT0/Q81tVy3wQBlA==", + "dev": true + }, + "esbuild-windows-32": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.4.tgz", + "integrity": "sha512-z4CH07pfyVY0XF98TCsGmLxKCl0kyvshKDbdpTekW9f2d+dJqn5mmoUyWhpSVJ0SfYWJg86FoD9nMbbaMVyGdg==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.4.tgz", + "integrity": "sha512-uVL11vORRPjocGLYam67rwFLd0LvkrHEs+JG+1oJN4UD9MQmNGZPa4gBHo6hDpF+kqRJ9kXgQSeDqUyRy0tj/Q==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.4.tgz", + "integrity": "sha512-vA6GLvptgftRcDcWngD5cMlL4f4LbL8JjU2UMT9yJ0MT5ra6hdZNFWnOeOoEtY4GtJ6OjZ0i+81sTqhAB0fMkg==", + "dev": true, + "optional": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -6552,12 +6568,12 @@ "dev": true }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, @@ -6596,6 +6612,12 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -6617,16 +6639,6 @@ "original": "^1.0.0" } }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -6875,17 +6887,16 @@ "dev": true }, "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" } }, "fast-json-stable-stringify": { @@ -6901,9 +6912,9 @@ "dev": true }, "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -6918,12 +6929,6 @@ "websocket-driver": ">=0.5.1" } }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -6933,36 +6938,6 @@ "escape-string-regexp": "^1.0.5" } }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -7031,41 +7006,11 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true }, "follow-redirects": { "version": "1.13.3", @@ -7102,12 +7047,6 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", - "dev": true - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -7123,42 +7062,6 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -7168,43 +7071,11 @@ "minipass": "^3.0.0" } }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, "fs.realpath": { "version": "1.0.0", @@ -7348,6 +7219,12 @@ "is-glob": "^4.0.1" } }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -7439,6 +7316,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -7497,52 +7383,23 @@ } } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "hdr-histogram-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.1.tgz", + "integrity": "sha512-uPZxl1dAFnjUFHWLZmt93vUUvtHeaBay9nVNHu38SdOjMSF/4KqJUqa1Seuj08ptU1rEb6AHvB41X8n/zFZ74Q==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" } }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hosted-git-info": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", @@ -7590,18 +7447,6 @@ } } }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, "html-entities": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", @@ -7803,12 +7648,6 @@ "sshpk": "^1.7.0" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -7854,12 +7693,6 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", @@ -7965,6 +7798,12 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -7998,21 +7837,22 @@ "dev": true }, "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", + "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.3.0", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.2.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -8028,9 +7868,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -8058,6 +7898,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "rxjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", + "dev": true, + "requires": { + "tslib": "~2.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8066,6 +7915,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true } } }, @@ -8124,12 +7979,13 @@ } }, "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { @@ -8153,32 +8009,10 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - }, - "dependencies": { - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - } - } - }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -8205,10 +8039,13 @@ } }, "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-descriptor": { "version": "0.1.6", @@ -8314,13 +8151,13 @@ } }, "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-resolvable": { @@ -8522,9 +8359,9 @@ "dev": true }, "jest-worker": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz", - "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==", + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", + "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8924,55 +8761,22 @@ } }, "less-loader": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz", + "integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==", "dev": true, "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "klona": "^2.0.4" } }, "license-webpack-plugin": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", - "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", + "version": "2.3.20", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", + "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", "webpack-sources": "^1.2.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } } }, "lie": { @@ -8984,6 +8788,12 @@ "immediate": "~3.0.5" } }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "dev": true + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -8991,9 +8801,9 @@ "dev": true }, "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, "loader-utils": { @@ -9022,6 +8832,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -9054,9 +8870,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -9177,34 +8993,15 @@ "promise-retry": "^2.0.1", "socks-proxy-agent": "^6.0.0", "ssri": "^8.0.0" - }, - "dependencies": { - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - } + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" } }, "map-cache": { @@ -9232,17 +9029,6 @@ "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -9255,6 +9041,33 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true + } + } + }, + "memfs": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", + "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -9349,24 +9162,6 @@ } } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -9395,9 +9190,9 @@ "dev": true }, "min-dash": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.7.0.tgz", - "integrity": "sha512-IlEbbItQU7tipoa4aAWocSuhR76jKqQG/N2+/Mh7d+BLZ3UmQl57ppKhziPY/TXBGps9+M8BC1c7AzqcYLp5BA==" + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.8.0.tgz", + "integrity": "sha512-a0TLbmL6p4RlNGblZcLd2yjPORp+bCYRlNGvwK5OMwWaMROWh1DlRgN9W8jJm2x9gVuscvD38BEosV7cnikKnw==" }, "min-dom": { "version": "3.1.3", @@ -9411,42 +9206,24 @@ } }, "mini-css-extract-plugin": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", - "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.1.tgz", + "integrity": "sha512-A0GBXpz8WIPgh2HfASJ0EeY8grd2dGxmC4R8uTujFJXZY7zFy0nvYSYW6SKCLKlz7y45BdHONfaxZQMIZpeF/w==", "dev": true, "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" + "schema-utils": "^3.1.0" }, "dependencies": { "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } } } }, @@ -9456,12 +9233,6 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -9478,9 +9249,9 @@ "dev": true }, "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", + "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -9496,9 +9267,9 @@ } }, "minipass-fetch": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.4.tgz", - "integrity": "sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, "requires": { "encoding": "^0.1.12", @@ -9554,24 +9325,6 @@ "yallist": "^4.0.0" } }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -9617,40 +9370,6 @@ "saxen": "^8.1.2" } }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9679,17 +9398,16 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true, - "optional": true + "nanocolors": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", + "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", + "dev": true }, "nanoid": { - "version": "3.1.23", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", - "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "version": "3.1.29", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", + "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", "dev": true }, "nanomatch": { @@ -9712,9 +9430,9 @@ } }, "needle": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", - "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, "optional": true, "requires": { @@ -9748,9 +9466,20 @@ "dev": true }, "ng-mocks": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-12.4.0.tgz", - "integrity": "sha512-ExgyNoVnnwOhfEd9EfhyS+md8tXj3ZCOL2p0Ilf2hn4XK9aLbd3ZNdw4IcY+2Vj+MPsKv0fsfgOgjAyoXSUelQ==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-12.5.0.tgz", + "integrity": "sha512-Kl4R8zabnPVA1fKO4C3eCckb8TSCKrAmz228X869JKKlsN8mJ8TsTJmDewt0oYV1EBqY3EtBLl3pgrTW2Jl0DQ==" + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } }, "nice-try": { "version": "1.0.5", @@ -9758,6 +9487,13 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", @@ -9793,86 +9529,17 @@ } } }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - } - } + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true, + "optional": true }, "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", "dev": true }, "nopt": { @@ -9997,14 +9664,20 @@ } }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { "boolbase": "^1.0.0" } }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -10145,13 +9818,14 @@ } }, "open": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", - "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", + "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", "dev": true, "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "opn": { @@ -10172,17 +9846,18 @@ } }, "ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "requires": { - "bl": "^4.0.3", + "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, @@ -10197,9 +9872,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -10247,18 +9922,18 @@ "url-parse": "^1.4.3" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10340,43 +10015,6 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10386,19 +10024,6 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -10463,12 +10088,6 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -10522,25 +10141,18 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", @@ -10568,6 +10180,18 @@ "pinkie": "^2.0.0" } }, + "piscina": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz", + "integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -10577,15 +10201,6 @@ "find-up": "^4.0.0" } }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "dev": true, - "requires": { - "ts-pnp": "^1.1.6" - } - }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -10624,16 +10239,36 @@ "dev": true }, "postcss": { - "version": "8.2.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", - "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", + "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", "dev": true, "requires": { "colorette": "^1.2.2", "nanoid": "^3.1.23", - "source-map": "^0.6.1" + "source-map-js": "^0.6.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" }, "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10652,1759 +10287,1455 @@ "postcss-value-parser": "^4.0.2" } }, - "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "dev": true, + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true - }, - "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true - }, - "postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true - }, - "postcss-import": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", - "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", - "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.4" + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - } - }, - "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "requires": { + "colord": "^2.0.1", "postcss-value-parser": "^4.1.0" } }, - "postcss-minify-gradients": { + "postcss-convert-values": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", - "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "is-color-stop": "^1.1.0", "postcss-value-parser": "^4.1.0" } }, - "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" + "postcss": "^7.0.14" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.4" + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true }, - "postcss-normalize-charset": { + "postcss-discard-duplicates": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", "dev": true }, - "postcss-normalize-display-values": { + "postcss-discard-empty": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true }, - "postcss-normalize-positions": { + "postcss-discard-overridden": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "postcss-font-variant": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", + "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", "dev": true, "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" } }, - "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "postcss-initial": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", "dev": true, "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "postcss-loader": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", + "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", "dev": true, "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.5" } }, - "postcss-svgo": { + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-merge-longhand": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", "dev": true, "requires": { + "css-color-names": "^1.0.1", "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "stylehacks": "^5.0.1" } }, - "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" + "vendors": "^1.0.3" } }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "dev": true, + "requires": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, - "protractor": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", - "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.1.7", - "yargs": "^15.3.1" + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" }, "dependencies": { - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + } + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + } + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + } + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "dev": true, + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + } + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "is-path-inside": "^1.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { - "path-is-inside": "^1.0.1" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + } + } + }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "glob": "^7.1.3" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + } + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "webdriver-manager": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", - "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", + } + } + }, + "postcss-selector-not": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", + "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "adm-zip": "^0.4.9", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dev": true, "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" } }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" }, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", "dev": true - } - } - }, - "raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/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" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "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://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.38.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", - "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.32.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", - "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sass-loader": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", - "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" + "array-uniq": "^1.0.1" } }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxen": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.1.2.tgz", - "integrity": "sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==" - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selenium-webdriver": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", - "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", - "dev": true, - "requires": { - "jszip": "^3.1.3", - "rimraf": "^2.5.4", - "tmp": "0.0.30", - "xml2js": "^0.4.17" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "glob": "^7.1.3" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.1" - } - } - } - }, - "selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "ms": "2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "", "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "ms": "2.0.0" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", "dev": true }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "ms": "2.0.0" + "is-path-inside": "^1.0.0" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "path-is-inside": "^1.0.1" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "glob": "^7.1.3" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "source-map": { @@ -12413,2073 +11744,2151 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "source-map": "^0.5.6" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "ansi-regex": "^2.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" } - } - } - }, - "socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - } - }, - "socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - }, - "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - } - }, - "socks-proxy-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.0.0.tgz", - "integrity": "sha512-FIgZbQWlnjVEQvMkylz64/rUggGtrKstPnx8OZyYFG0tAFR8CSBtpXxSwbFLHyeXFn/cunFL7MpuSOvDSOPo9g==", + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" } }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "source-map-loader": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", - "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.2", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "source-map": "^0.6.1", - "whatwg-mimetype": "^2.3.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "safe-buffer": "^5.1.0" } }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "dev": true, "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } } }, - "speed-measure-webpack-plugin": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", - "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", "dev": true, "requires": { - "chalk": "^4.1.0" + "pify": "^2.3.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" } }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "minipass": "^3.1.1" + "picomatch": "^2.2.1" } }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "regenerate": "^1.4.2" } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, - "streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { - "date-format": "^2.1.0", - "debug": "^4.1.1", - "fs-extra": "^8.1.0" + "jsesc": "~0.5.0" }, "dependencies": { - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } } } }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true } } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, - "strip-eof": { + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "style-loader": { + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "resolve-from": "^3.0.0" }, "dependencies": { - "schema-utils": { + "resolve-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true } } }, - "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - } + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, - "stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", "dev": true, "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "ms": "2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "stylus-loader": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", - "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "fast-glob": "^3.2.4", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "glob": "^7.1.3" } }, - "svgo": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.4.0.tgz", - "integrity": "sha512-W25S1UUm9Lm9VnE0TvCzL7aso/NCzDEaXLaElCUO/KaVitw0+IBicSVfM1L1c0YHK5TOFh73yQ2naCpVHEQ/OQ==", + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "@trysound/sax": "0.1.1", - "colorette": "^1.2.2", - "commander": "^7.1.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.2", - "csso": "^4.2.0", - "stable": "^0.1.8" + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" }, "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "sass": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz", + "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==", "dev": true, "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "chokidar": ">=3.0.0 <4.0.0" } }, - "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "sass-loader": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", + "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", "dev": true, "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "klona": "^2.0.4", + "neo-async": "^2.6.2" } }, - "terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", "dev": true, "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" + "https-proxy-agent": "^2.2.1" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "es6-promisify": "^5.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ms": "^2.1.1" } }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "agent-base": "^4.3.0", + "debug": "^3.1.0" } } } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "saxen": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.1.2.tgz", + "integrity": "sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==" + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" }, "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "glob": "^7.1.3" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "os-tmpdir": "~1.0.1" } } } }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "dev": true, "requires": { - "setimmediate": "^1.0.4" + "node-forge": "^0.10.0" } }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tiny-svg": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.2.tgz", - "integrity": "sha512-u6zCuMkDR/3VAh83X7hDRn/pi0XhwG2ycuNS0cTFtQjGdOG2tSvEb8ds65VeGWc3H6PUjJKeunueXqgkZqtMsg==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "lru-cache": "^6.0.0" } }, - "to-arraybuffer": { + "semver-dsl": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "randombytes": "^2.1.0" } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "is-number": "^7.0.0" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" } }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "kind-of": "^6.0.2" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "shebang-regex": "^1.0.0" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, - "ua-parser-js": { - "version": "0.7.27", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.27.tgz", - "integrity": "sha512-eXMaRYK2skomGocoX0x9sBXzx5A1ZVQgXfrW4mTc8dT0zS7olEcyfudAzRC5tIIRgLxQ69B6jut3DI+n5hslPA==", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } } }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "socket.io": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" } }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "dev": true, "requires": { - "unique-slug": "^2.0.0" + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" } }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "imurmurhash": "^0.1.4" + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "sockjs-client": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz", + "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.3" }, "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } + "ms": "^2.1.1" } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "socks-proxy-agent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", + "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", "dev": true, "requires": { - "punycode": "^2.1.0" + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", + "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", "dev": true, "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "source-map-js": "^0.6.2" }, "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } } } }, - "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { - "inherits": "2.0.3" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } }, - "validate-npm-package-name": { + "spdy-transport": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { - "builtins": "^1.0.3" + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "minipass": "^3.1.1" } }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "dev": true }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } } }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", "dev": true, - "optional": true, "requires": { - "chokidar": "^2.1.8" + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/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" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/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", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/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", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "optional": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + } + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", + "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", + "dev": true + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + } + }, + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, - "optional": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "ms": "2.0.0" } }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "stylus-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz", + "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==", + "dev": true, + "requires": { + "fast-glob": "^3.2.5", + "klona": "^2.0.4", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", + "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "nanocolors": "^0.1.12", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + }, + "terser-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "dev": true, + "requires": { + "jest-worker": "^27.0.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.0" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "yocto-queue": "^0.1.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, - "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-svg": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.2.tgz", + "integrity": "sha512-u6zCuMkDR/3VAh83X7hDRn/pi0XhwG2ycuNS0cTFtQjGdOG2tSvEb8ds65VeGWc3H6PUjJKeunueXqgkZqtMsg==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "optional": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-buffer": "^1.1.5" } } } }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "minimalistic-assert": "^1.0.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "defaults": "^1.0.3" + "is-number": "^7.0.0" } }, - "webdriver-js-extender": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", - "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "@types/selenium-webdriver": "^3.0.0", - "selenium-webdriver": "^3.0.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, - "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "ts-node": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", + "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.27", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.27.tgz", + "integrity": "sha512-eXMaRYK2skomGocoX0x9sBXzx5A1ZVQgXfrW4mTc8dT0zS7olEcyfudAzRC5tIIRgLxQ69B6jut3DI+n5hslPA==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "isarray": "1.0.0" } } } }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/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" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "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": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + } + } + }, + "url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", + "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.7.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^3.2.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", + "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", "dev": true } } }, "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz", + "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==", "dev": true, "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "schema-utils": "^3.0.0" }, "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", "dev": true }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "dev": true, "requires": { - "minimist": "^1.2.5" + "mime-db": "1.50.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } @@ -14635,11 +14044,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "glob-parent": { "version": "3.1.0", @@ -14712,6 +14117,21 @@ "to-regex": "^3.0.2" } }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -14791,6 +14211,19 @@ "is-number": "^3.0.0", "repeat-string": "^1.6.1" } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } } } }, @@ -14813,9 +14246,9 @@ } }, "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -14823,13 +14256,13 @@ } }, "webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -14847,24 +14280,6 @@ "dev": true, "requires": { "webpack-sources": "^1.3.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } } }, "websocket-driver": { @@ -14884,12 +14299,6 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -14953,46 +14362,6 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "worker-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", - "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -15075,12 +14444,6 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, "y18n": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", @@ -15199,14 +14562,6 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } }, "yn": { diff --git a/package.json b/package.json index 98262e29..d0ec2a79 100644 --- a/package.json +++ b/package.json @@ -12,32 +12,32 @@ }, "private": true, "dependencies": { - "@angular/animations": "^12.2.3", - "@angular/cdk": "^12.2.3", - "@angular/common": "^12.2.3", - "@angular/compiler": "^12.2.3", - "@angular/core": "^12.2.3", - "@angular/forms": "^12.2.3", - "@angular/material": "^12.2.3", - "@angular/platform-browser": "^12.2.3", - "@angular/platform-browser-dynamic": "^12.2.3", - "@angular/router": "^12.2.3", - "bpmn-js": "^8.7.2", + "@angular/animations": "^12.2.9", + "@angular/cdk": "^12.2.9", + "@angular/common": "^12.2.9", + "@angular/compiler": "^12.2.9", + "@angular/core": "^12.2.9", + "@angular/forms": "^12.2.9", + "@angular/material": "^12.2.9", + "@angular/platform-browser": "^12.2.9", + "@angular/platform-browser-dynamic": "^12.2.9", + "@angular/router": "^12.2.9", + "bpmn-js": "^8.7.3", "dot": "^1.1.3", - "jest-worker": "^27.1.0", + "jest-worker": "^27.2.4", "material-design-icons": "^3.0.1", - "min-dash": "^3.7.0", - "ng-mocks": "^12.4.0", + "min-dash": "^3.8.0", + "ng-mocks": "^12.5.0", "rxjs": "~6.6.0", "tslib": "^2.3.1", "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.1102.14", - "@angular/cli": "^12.2.3", - "@angular/compiler-cli": "^12.2.3", - "@types/jasmine": "^3.8.2", - "@types/node": "^12.20.21", + "@angular-devkit/build-angular": "^12.2.9", + "@angular/cli": "^12.2.9", + "@angular/compiler-cli": "^12.2.9", + "@types/jasmine": "^3.9.1", + "@types/node": "^12.20.28", "codelyzer": "^6.0.2", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", @@ -46,9 +46,9 @@ "karma-coverage": "~2.0.3", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.7.0", + "prettier": "^2.4.1", "protractor": "~7.0.0", "ts-node": "~8.3.0", - "typescript": "4.3.5", - "prettier": "^2.4.1" + "typescript": "4.3.5" } } From 8b44108d02093bd0ce281d84b4e13ea77b1c9d9d Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Thu, 7 Oct 2021 13:37:11 +0200 Subject: [PATCH 003/242] change back to angular devkit 11 to avoid webpack 5 --- .gitignore | 2 +- .idea/misc.xml | 3 + package-lock.json | 6542 ++++++++++++++++++++++++--------------------- package.json | 2 +- 4 files changed, 3479 insertions(+), 3070 deletions(-) diff --git a/.gitignore b/.gitignore index 1092d712..4bf4cb35 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ speed-measure-plugin*.json # IDEs and editors /.project -/.idea +.idea/ .classpath .c9/ *.launch diff --git a/.idea/misc.xml b/.idea/misc.xml index 639900d1..841774f9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,4 +3,7 @@ + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6181e643..d403c383 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,16 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@ampproject/remapping": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz", - "integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "1.0.0", - "sourcemap-codec": "1.4.8" - } - }, "@angular-devkit/architect": { "version": "0.1202.9", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.9.tgz", @@ -25,431 +15,343 @@ } }, "@angular-devkit/build-angular": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.9.tgz", - "integrity": "sha512-A8yddhGpUnrTcA4WCiUxwklFbfkNMfvlST5CT9VLVjz4MEwwOpdaNmIF39+NMr4XTgOBbP6Bq/t3ciIsB5+/Uw==", - "dev": true, - "requires": { - "@ampproject/remapping": "1.0.1", - "@angular-devkit/architect": "0.1202.9", - "@angular-devkit/build-optimizer": "0.1202.9", - "@angular-devkit/build-webpack": "0.1202.9", - "@angular-devkit/core": "12.2.9", - "@babel/core": "7.14.8", - "@babel/generator": "7.14.8", - "@babel/helper-annotate-as-pure": "7.14.5", - "@babel/plugin-proposal-async-generator-functions": "7.14.7", - "@babel/plugin-transform-async-to-generator": "7.14.5", - "@babel/plugin-transform-runtime": "7.14.5", - "@babel/preset-env": "7.14.8", - "@babel/runtime": "7.14.8", - "@babel/template": "7.14.5", - "@discoveryjs/json-ext": "0.5.3", + "version": "0.1102.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.14.tgz", + "integrity": "sha512-SyX9SK3qfpk6xNIrxpxYi8zxP/cN2kny4I+XYbkKvgGiE3qhkrC/PRJE9OWj0sloekLD0CDfFWOvIiw3GMc4Tg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1102.14", + "@angular-devkit/build-optimizer": "0.1102.14", + "@angular-devkit/build-webpack": "0.1102.14", + "@angular-devkit/core": "11.2.14", + "@babel/core": "7.12.10", + "@babel/generator": "7.12.11", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.10", + "@babel/preset-env": "7.12.11", + "@babel/runtime": "7.12.5", + "@babel/template": "7.12.7", + "@discoveryjs/json-ext": "0.5.2", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.2.9", + "@ngtools/webpack": "11.2.14", "ansi-colors": "4.1.1", + "autoprefixer": "10.2.4", "babel-loader": "8.2.2", "browserslist": "^4.9.1", - "cacache": "15.2.0", + "cacache": "15.0.5", "caniuse-lite": "^1.0.30001032", "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "9.0.1", - "core-js": "3.16.0", - "critters": "0.0.10", - "css-loader": "6.2.0", - "css-minimizer-webpack-plugin": "3.0.2", - "esbuild": "0.13.4", - "esbuild-wasm": "0.13.4", + "copy-webpack-plugin": "6.3.2", + "core-js": "3.8.3", + "critters": "0.0.7", + "css-loader": "5.0.1", + "cssnano": "5.0.2", + "file-loader": "6.2.0", "find-cache-dir": "3.3.1", - "glob": "7.1.7", + "glob": "7.1.6", "https-proxy-agent": "5.0.0", - "inquirer": "8.1.2", + "inquirer": "7.3.3", + "jest-worker": "26.6.2", "karma-source-map-support": "1.4.0", "less": "4.1.1", - "less-loader": "10.0.1", - "license-webpack-plugin": "2.3.20", + "less-loader": "7.3.0", + "license-webpack-plugin": "2.3.11", "loader-utils": "2.0.0", - "mini-css-extract-plugin": "2.2.1", + "mini-css-extract-plugin": "1.3.5", "minimatch": "3.0.4", - "open": "8.2.1", - "ora": "5.4.1", + "open": "7.4.0", + "ora": "5.3.0", "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.1.0", - "postcss": "8.3.6", - "postcss-import": "14.0.2", - "postcss-loader": "6.1.1", - "postcss-preset-env": "6.7.0", - "regenerator-runtime": "0.13.9", + "pnp-webpack-plugin": "1.6.4", + "postcss": "8.2.15", + "postcss-import": "14.0.0", + "postcss-loader": "4.2.0", + "raw-loader": "4.0.2", + "regenerator-runtime": "0.13.7", "resolve-url-loader": "4.0.0", - "rxjs": "6.6.7", - "sass": "1.36.0", - "sass-loader": "12.1.0", - "semver": "7.3.5", - "source-map-loader": "3.0.0", + "rimraf": "3.0.2", + "rollup": "2.38.4", + "rxjs": "6.6.3", + "sass": "1.32.6", + "sass-loader": "10.1.1", + "semver": "7.3.4", + "source-map": "0.7.3", + "source-map-loader": "1.1.3", "source-map-support": "0.5.19", - "style-loader": "3.2.1", + "speed-measure-webpack-plugin": "1.4.2", + "style-loader": "2.0.0", "stylus": "0.54.8", - "stylus-loader": "6.1.0", - "terser": "5.7.1", - "terser-webpack-plugin": "5.1.4", + "stylus-loader": "4.3.3", + "terser": "5.5.1", + "terser-webpack-plugin": "4.2.3", "text-table": "0.2.0", "tree-kill": "1.2.2", - "tslib": "2.3.0", - "webpack": "5.50.0", - "webpack-dev-middleware": "5.0.0", + "webpack": "4.44.2", + "webpack-dev-middleware": "3.7.2", "webpack-dev-server": "3.11.2", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "1.5.2" + "webpack-merge": "5.7.3", + "webpack-sources": "2.2.0", + "webpack-subresource-integrity": "1.5.2", + "worker-plugin": "5.0.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/core": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", - "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.8", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.14.8", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.8", - "@babel/types": "^7.14.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", - "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, - "requires": { - "@babel/types": "^7.14.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "@angular-devkit/architect": { + "version": "0.1102.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.14.tgz", + "integrity": "sha512-965TVXuBtRb8RySgxRxUEO+YTd7mT0xiqVHSe+MHvMtUCmEE9vwRofFZl6axkK5ri4fiomiMnOVE19aw4spgNQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "dependencies": { - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - } + "@angular-devkit/core": "11.2.14", + "rxjs": "6.6.3" } }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "@angular-devkit/core": { + "version": "11.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", + "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "color-convert": "^2.0.1" } }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "cacache": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, - "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "color-name": "~1.1.4" } }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" } }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "dependencies": { - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - } + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" } }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "open": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" } }, - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true - }, - "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" } }, - "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, - "requires": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - } + "tslib": "^1.9.0" } }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" + "lru-cache": "^6.0.0" } }, - "esbuild": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz", - "integrity": "sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, "requires": { - "esbuild-android-arm64": "0.13.4", - "esbuild-darwin-64": "0.13.4", - "esbuild-darwin-arm64": "0.13.4", - "esbuild-freebsd-64": "0.13.4", - "esbuild-freebsd-arm64": "0.13.4", - "esbuild-linux-32": "0.13.4", - "esbuild-linux-64": "0.13.4", - "esbuild-linux-arm": "0.13.4", - "esbuild-linux-arm64": "0.13.4", - "esbuild-linux-mips64le": "0.13.4", - "esbuild-linux-ppc64le": "0.13.4", - "esbuild-openbsd-64": "0.13.4", - "esbuild-sunos-64": "0.13.4", - "esbuild-windows-32": "0.13.4", - "esbuild-windows-64": "0.13.4", - "esbuild-windows-arm64": "0.13.4" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "has-flag": "^4.0.0" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-devkit/build-optimizer": { - "version": "0.1202.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.9.tgz", - "integrity": "sha512-yDR7f2fRWzJdqa7U0eIYu5fCRIae3tcSsYE18UPiV5ypGK3talMIpZ1ibkklr9Nm9SAB6Js1/EdVBGB5jo3R9A==", + "version": "0.1102.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.14.tgz", + "integrity": "sha512-1j69rFqE6tPMO0lQvOH8ogF7vE+p+Ws1/OtdZKUkZPOerIbQ8A3n5wzCx6/ZzMVhBQ3sXNhaShb4b9/1YuwU/g==", "dev": true, "requires": { + "loader-utils": "2.0.0", "source-map": "0.7.3", - "tslib": "2.3.0", - "typescript": "4.3.5" + "tslib": "2.1.0", + "typescript": "4.1.5", + "webpack-sources": "2.2.0" }, "dependencies": { "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "typescript": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1202.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.9.tgz", - "integrity": "sha512-UKVxFTRSyDpQDxM1yk1OJiynhbryrbsy+WgZ/gFcnZcrRGtrpAWOq+uMXfq05zET6CNqpOKBnxy9LSHAwXR5Ig==", + "version": "0.1102.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.14.tgz", + "integrity": "sha512-+dJvzrwjbHY0bNr8fUDVbn4D4pAT/h1YVpGVyaoX7q66LN0x61zRC3e10gJ/Mr54l3yfc26M0OPD9KG8iZRbCA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1202.9", - "rxjs": "6.6.7" + "@angular-devkit/architect": "0.1102.14", + "@angular-devkit/core": "11.2.14", + "rxjs": "6.6.3" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1102.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.14.tgz", + "integrity": "sha512-965TVXuBtRb8RySgxRxUEO+YTd7mT0xiqVHSe+MHvMtUCmEE9vwRofFZl6axkK5ri4fiomiMnOVE19aw4spgNQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "11.2.14", + "rxjs": "6.6.3" + } + }, + "@angular-devkit/core": { + "version": "11.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", + "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/core": { @@ -733,12 +635,6 @@ "tslib": "^2.2.0" } }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, "@babel/code-frame": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", @@ -811,12 +707,12 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", - "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.15.4" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -919,15 +815,6 @@ "source-map": "^0.5.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, "@babel/helper-function-name": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", @@ -1066,30 +953,6 @@ "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "@babel/helper-explode-assignable-expression": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", @@ -1250,15 +1113,6 @@ "@babel/types": "^7.15.4" }, "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", @@ -1517,25 +1371,14 @@ "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", "dev": true }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - } - }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", - "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", + "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.15.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, @@ -1549,17 +1392,6 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, "@babel/plugin-proposal-dynamic-import": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", @@ -1664,45 +1496,6 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - } - } - }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", @@ -1731,15 +1524,6 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -1821,15 +1605,6 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", @@ -1849,41 +1624,14 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -1939,15 +1687,6 @@ "source-map": "^0.5.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, "@babel/helper-function-name": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", @@ -3222,48 +2961,20 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", - "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", + "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "semver": "^5.5.1" }, "dependencies": { - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -3334,106 +3045,83 @@ } }, "@babel/preset-env": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz", - "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.7", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.5", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.14.5", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.8", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.15.0", - "semver": "^6.3.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" }, "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -3452,9 +3140,9 @@ } }, "@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -3517,16 +3205,10 @@ "to-fast-properties": "^2.0.0" } }, - "@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "dev": true - }, "@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true }, "@istanbuljs/schema": { @@ -3535,12 +3217,6 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, - "@jridgewell/resolve-uri": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz", - "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==", - "dev": true - }, "@jsdevtools/coverage-istanbul-loader": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", @@ -3555,10 +3231,45 @@ } }, "@ngtools/webpack": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.9.tgz", - "integrity": "sha512-IQkzvompjLdWbZ+33crtyVF8huF53C36k1FNFdq3x2j4Kw4ssDd6K9fq3aZpRCK0J8O79HJ5j4QH6ZtWjwajLg==", - "dev": true + "version": "11.2.14", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.14.tgz", + "integrity": "sha512-6q57tEWtUJRsxfTKE19L20iXvNesfVy8hrVdyzVk64DZQh0lIl4/xZT4d5bJCWOuQQDaAeZK4YbEFcYJn7k1yw==", + "dev": true, + "requires": { + "@angular-devkit/core": "11.2.14", + "enhanced-resolve": "5.7.0", + "webpack-sources": "2.2.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "11.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", + "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -3701,32 +3412,6 @@ "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", "dev": true }, - "@types/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true - }, "@types/glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", @@ -3798,148 +3483,177 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -3984,15 +3698,9 @@ } }, "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, "adjust-sourcemap-loader": { @@ -4267,18 +3975,65 @@ "safer-buffer": "~2.1.0" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -4319,36 +4074,17 @@ "dev": true }, "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", + "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", + "browserslist": "^4.16.1", + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "fraction.js": "^4.0.13", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "aws-sign2": { @@ -4415,44 +4151,6 @@ "object.assign": "^4.1.0" } }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -4579,6 +4277,18 @@ "minimist": "^1.2.0" } }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -4686,6 +4396,93 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "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": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { "version": "4.17.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", @@ -4760,6 +4557,18 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -4831,9 +4640,9 @@ "dev": true }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, "caniuse-api": { @@ -4911,6 +4720,16 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "circular-dependency-plugin": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", @@ -5223,6 +5042,44 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -5258,12 +5115,24 @@ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -5309,6 +5178,40 @@ "is-what": "^3.12.0" } }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -5316,38 +5219,24 @@ "dev": true }, "copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", + "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", "dev": true, "requires": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", + "p-limit": "^3.0.2", "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" }, "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5367,13 +5256,29 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } } } }, "core-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz", - "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", "dev": true }, "core-js-compat": { @@ -5423,10 +5328,55 @@ "yaml": "^1.10.0" } }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "critters": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.10.tgz", - "integrity": "sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", + "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -5508,44 +5458,36 @@ } } }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, "requires": { - "postcss": "^7.0.5" + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" }, "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5569,91 +5511,26 @@ "timsort": "^0.3.0" } }, - "css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "css-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz", - "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", + "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", "dev": true, "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", + "camelcase": "^6.2.0", + "cssesc": "^3.0.0", + "icss-utils": "^5.0.0", + "loader-utils": "^2.0.0", + "postcss": "^8.1.4", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - } - }, - "css-minimizer-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==", - "dev": true, - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "semver": "^7.3.2" }, "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -5664,12 +5541,6 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -5715,33 +5586,6 @@ } } }, - "css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "css-select": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", @@ -5803,12 +5647,6 @@ "through": "X.X.X" } }, - "cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", - "dev": true - }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -5816,15 +5654,14 @@ "dev": true }, "cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.2.tgz", + "integrity": "sha512-8JK3EnPsjQsULme9/e5M2hF564f/480hwsdcHvQ7ZtAIMfQ1O3SCfs+b8Mjf5KJxhYApyRshR2QSovEJi2K72Q==", "dev": true, "requires": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cosmiconfig": "^7.0.0", + "cssnano-preset-default": "^5.0.1", + "is-resolvable": "^1.1.0" } }, "cssnano-preset-default": { @@ -5885,6 +5722,12 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, "damerau-levenshtein": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", @@ -6102,6 +5945,16 @@ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -6156,6 +6009,25 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -6213,6 +6085,12 @@ "entities": "^2.0.0" } }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", @@ -6249,6 +6127,44 @@ "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==" }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6271,6 +6187,29 @@ "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", "dev": true }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6359,9 +6298,9 @@ } }, "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -6410,12 +6349,6 @@ "is-arrayish": "^0.2.1" } }, - "es-module-lexer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", - "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", - "dev": true - }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -6431,124 +6364,6 @@ "es6-promise": "^4.0.3" } }, - "esbuild-android-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.4.tgz", - "integrity": "sha512-elDJt+jNyoHFId0/dKsuVYUPke3EcquIyUwzJCH17a3ERglN3A9aMBI5zbz+xNZ+FbaDNdpn0RaJHCFLbZX+fA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.4.tgz", - "integrity": "sha512-zJQGyHRAdZUXlRzbN7W+7ykmEiGC+bq3Gc4GxKYjjWTgDRSEly98ym+vRNkDjXwXYD3gGzSwvH35+MiHAtWvLA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.4.tgz", - "integrity": "sha512-r8oYvAtqSGq8HNTZCAx4TdLE7jZiGhX9ooGi5AQAey37MA6XNaP8ZNlw9OCpcgpx3ryU2WctXwIqPzkHO7a8dg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.4.tgz", - "integrity": "sha512-u9DRGkn09EN8+lCh6z7FKle7awi17PJRBuAKdRNgSo5ZrH/3m+mYaJK2PR2URHMpAfXiwJX341z231tSdVe3Yw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.4.tgz", - "integrity": "sha512-q3B2k68Uf6gfjATjcK16DqxvjqRQkHL8aPoOfj4op+lSqegdXvBacB1d8jw8PxbWJ8JHpdTLdAVUYU80kotQXA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.4.tgz", - "integrity": "sha512-UUYJPHSiKAO8KoN3Ls/iZtgDLZvK5HarES96aolDPWZnq9FLx4dIHM/x2z4Rxv9IYqQ/DxlPoE2Co1UPBIYYeA==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.4.tgz", - "integrity": "sha512-+RnohAKiiUW4UHLGRkNR1AnENW1gCuDWuygEtd4jxTNPIoeC7lbXGor7rtgjj9AdUzFgOEvAXyNNX01kJ8NueQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.4.tgz", - "integrity": "sha512-BH5gKve4jglS7UPSsfwHSX79I5agC/lm4eKoRUEyo8lwQs89frQSRp2Xup+6SFQnxt3md5EsKcd2Dbkqeb3gPA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.4.tgz", - "integrity": "sha512-+A188cAdd6QuSRxMIwRrWLjgphQA0LDAQ/ECVlrPVJwnx+1i64NjDZivoqPYLOTkSPIKntiWwMhhf0U5/RrPHQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.4.tgz", - "integrity": "sha512-0xkwtPaUkG5xMTFGaQPe1AadSe5QAiQuD4Gix1O9k5Xo/U8xGIkw9UFUTvfEUeu71vFb6ZgsIacfP1NLoFjWNw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.4.tgz", - "integrity": "sha512-E1+oJPP7A+j23GPo3CEpBhGwG1bni4B8IbTA3/3rvzjURwUMZdcN3Fhrz24rnjzdLSHmULtOE4VsbT42h1Om4Q==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.4.tgz", - "integrity": "sha512-xEkI1o5HYxDzbv9jSox0EsDxpwraG09SRiKKv0W8pH6O3bt+zPSlnoK7+I7Q69tkvONkpIq5n2o+c55uq0X7cw==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.4.tgz", - "integrity": "sha512-bjXUMcODMnB6hQicLBBmmnBl7OMDyVpFahKvHGXJfDChIi5udiIRKCmFUFIRn+AUAKVlfrofRKdyPC7kBsbvGQ==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.4.tgz", - "integrity": "sha512-2dN7njr9/2QzKLqbTEgXr73vDbSqffdJMv4EfaMQoy04cej0owbGHH5apPgED0wN9I5e7sBT0/Q81tVy3wQBlA==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.4.tgz", - "integrity": "sha512-z4CH07pfyVY0XF98TCsGmLxKCl0kyvshKDbdpTekW9f2d+dJqn5mmoUyWhpSVJ0SfYWJg86FoD9nMbbaMVyGdg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.4.tgz", - "integrity": "sha512-uVL11vORRPjocGLYam67rwFLd0LvkrHEs+JG+1oJN4UD9MQmNGZPa4gBHo6hDpF+kqRJ9kXgQSeDqUyRy0tj/Q==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.4.tgz", - "integrity": "sha512-vA6GLvptgftRcDcWngD5cMlL4f4LbL8JjU2UMT9yJ0MT5ra6hdZNFWnOeOoEtY4GtJ6OjZ0i+81sTqhAB0fMkg==", - "dev": true, - "optional": true - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -6568,12 +6383,12 @@ "dev": true }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "esrecurse": "^4.3.0", + "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, @@ -6612,12 +6427,6 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -6639,6 +6448,16 @@ "original": "^1.0.0" } }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -6929,6 +6748,12 @@ "websocket-driver": ">=0.5.1" } }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -6938,20 +6763,43 @@ "escape-string-regexp": "^1.0.5" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7006,11 +6854,41 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "dev": true + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } }, "follow-redirects": { "version": "1.13.3", @@ -7047,6 +6925,12 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -7062,6 +6946,42 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -7071,11 +6991,43 @@ "minipass": "^3.0.0" } }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } }, "fs.realpath": { "version": "1.0.0", @@ -7219,12 +7171,6 @@ "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -7383,22 +7329,45 @@ } } }, - "hdr-histogram-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.1.tgz", - "integrity": "sha512-uPZxl1dAFnjUFHWLZmt93vUUvtHeaBay9nVNHu38SdOjMSF/4KqJUqa1Seuj08ptU1rEb6AHvB41X8n/zFZ74Q==", + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } }, "hosted-git-info": { "version": "4.0.2", @@ -7648,6 +7617,12 @@ "sshpk": "^1.7.0" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -7693,6 +7668,12 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", @@ -7798,12 +7779,6 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -8761,22 +8736,55 @@ } }, "less-loader": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz", - "integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, "requires": { - "klona": "^2.0.4" + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "license-webpack-plugin": { - "version": "2.3.20", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", - "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", + "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", "webpack-sources": "^1.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } } }, "lie": { @@ -8788,12 +8796,6 @@ "immediate": "~3.0.5" } }, - "lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", - "dev": true - }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -8801,9 +8803,9 @@ "dev": true }, "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, "loader-utils": { @@ -8832,12 +8834,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -8995,15 +8991,6 @@ "ssri": "^8.0.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -9029,6 +9016,17 @@ "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -9041,33 +9039,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - } - } - }, - "memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", - "dev": true, - "requires": { - "fs-monkey": "1.0.3" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -9162,6 +9133,24 @@ } } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -9206,12 +9195,14 @@ } }, "mini-css-extract-plugin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.1.tgz", - "integrity": "sha512-A0GBXpz8WIPgh2HfASJ0EeY8grd2dGxmC4R8uTujFJXZY7zFy0nvYSYW6SKCLKlz7y45BdHONfaxZQMIZpeF/w==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", + "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", "dev": true, "requires": { - "schema-utils": "^3.1.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" }, "dependencies": { "schema-utils": { @@ -9224,6 +9215,22 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } } } }, @@ -9233,6 +9240,12 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -9325,10 +9338,28 @@ "yallist": "^4.0.0" } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -9370,6 +9401,40 @@ "saxen": "^8.1.2" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9470,30 +9535,12 @@ "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-12.5.0.tgz", "integrity": "sha512-Kl4R8zabnPVA1fKO4C3eCckb8TSCKrAmz228X869JKKlsN8mJ8TsTJmDewt0oYV1EBqY3EtBLl3pgrTW2Jl0DQ==" }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", @@ -9529,12 +9576,81 @@ } } }, - "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "optional": true + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + } + } }, "node-releases": { "version": "1.1.77", @@ -9672,12 +9788,6 @@ "boolbase": "^1.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -9922,18 +10032,18 @@ "url-parse": "^1.4.3" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10015,6 +10125,43 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10024,6 +10171,19 @@ "callsites": "^3.0.0" } }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -10088,6 +10248,12 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -10141,6 +10307,19 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -10180,18 +10359,6 @@ "pinkie": "^2.0.0" } }, - "piscina": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz", - "integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==", - "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" - } - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -10201,6 +10368,15 @@ "find-up": "^4.0.0" } }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -10239,36 +10415,16 @@ "dev": true }, "postcss": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", - "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", "dev": true, "requires": { "colorette": "^1.2.2", "nanoid": "^3.1.23", - "source-map-js": "^0.6.2" - } - }, - "postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" + "source-map": "^0.6.1" }, "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10287,1685 +10443,892 @@ "postcss-value-parser": "^4.0.2" } }, - "postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", "dev": true, "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", "dev": true, "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true + }, + "postcss-import": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", + "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" }, "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, - "postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", "dev": true, "requires": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" } }, - "postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", "dev": true, "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" } }, - "postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", "dev": true, "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, - "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", "dev": true, "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", + "colord": "^2.6", + "cssnano-utils": "^2.0.1", "postcss-value-parser": "^4.1.0" } }, - "postcss-convert-values": { + "postcss-minify-params": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0" + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" } }, - "postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", "dev": true, "requires": { - "postcss": "^7.0.14" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" } }, - "postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, - "postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "postcss-selector-parser": "^6.0.4" } }, - "postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "icss-utils": "^5.0.0" } }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true - }, - "postcss-discard-duplicates": { + "postcss-normalize-charset": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", "dev": true }, - "postcss-discard-empty": { + "postcss-normalize-display-values": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } }, - "postcss-discard-overridden": { + "postcss-normalize-positions": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true - }, - "postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", "dev": true, "requires": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, - "postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", "dev": true, "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, - "postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-font-variant": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" } }, - "postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", "dev": true, "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, - "postcss-import": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", - "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", "dev": true, "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-initial": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", - "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" } }, - "postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", "dev": true, "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } }, - "postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, - "requires": { - "css-color-names": "^1.0.1", "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - } - }, - "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - } - }, - "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", - "dev": true, - "requires": { - "colord": "^2.6", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "svgo": "^2.3.0" } }, - "postcss-minify-params": { + "postcss-unique-selectors": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "dev": true, "requires": { "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", + "postcss-selector-parser": "^6.0.5", "uniqs": "^2.0.0" } }, - "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { - "icss-utils": "^5.0.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" } }, - "postcss-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", "dev": true, "requires": { - "postcss": "^7.0.2" + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" }, "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "array-uniq": "^1.0.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true - } - } - }, - "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true - }, - "postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dev": true, - "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-name": "~1.1.4" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - } - } - }, - "postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "dev": true, - "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true - } - } - }, - "postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "dev": true, - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", "dev": true }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "is-path-inside": "^1.0.0" } }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "glob": "^7.1.3" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "source-map": "^0.5.6" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-regex": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true - } - } - }, - "postcss-selector-not": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", - "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + }, + "webdriver-manager": { + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" } }, - "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, - "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, - "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "safe-buffer": "^5.1.0" } }, - "protractor": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", - "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.1.7", - "yargs": "^15.3.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "dependencies": { - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + } + } + }, + "raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "path-is-inside": "^1.0.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "webdriver-manager": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", - "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", - "dev": true, - "requires": { - "adm-zip": "^0.4.9", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - } - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "^2.3.0" - }, - "dependencies": { + } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -12026,9 +11389,9 @@ } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { @@ -12294,6 +11657,25 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "2.38.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", + "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", + "dev": true, + "requires": { + "fsevents": "~2.3.1" + } + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -12309,8 +11691,17 @@ "queue-microtask": "^1.2.2" } }, - "rxjs": { - "version": "6.6.7", + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { @@ -12346,22 +11737,38 @@ "dev": true }, "sass": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz", - "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==", + "version": "1.32.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", + "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", "dev": true, "requires": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", "dev": true, "requires": { "klona": "^2.0.4", - "neo-async": "^2.6.2" + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "saucelabs": { @@ -12545,9 +11952,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -12656,12 +12063,28 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -12948,21 +12371,18 @@ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, - "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true - }, "source-map-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", - "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", + "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", "dev": true, "requires": { "abab": "^2.0.5", "iconv-lite": "^0.6.2", - "source-map-js": "^0.6.2" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.6.1", + "whatwg-mimetype": "^2.3.0" }, "dependencies": { "iconv-lite": { @@ -12973,6 +12393,23 @@ "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -13043,6 +12480,66 @@ "wbuf": "^1.7.3" } }, + "speed-measure-webpack-plugin": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", + "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -13111,6 +12608,97 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, "streamroller": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", @@ -13185,10 +12773,27 @@ "dev": true }, "style-loader": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", - "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } }, "stylehacks": { "version": "5.0.1", @@ -13240,14 +12845,29 @@ } }, "stylus-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz", - "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", + "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", "dev": true, "requires": { - "fast-glob": "^3.2.5", + "fast-glob": "^3.2.4", "klona": "^2.0.4", - "normalize-path": "^3.0.0" + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "supports-color": { @@ -13309,9 +12929,9 @@ } }, "terser": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", - "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", "dev": true, "requires": { "commander": "^2.20.0", @@ -13320,19 +12940,39 @@ } }, "terser-webpack-plugin": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", - "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", "dev": true, "requires": { - "jest-worker": "^27.0.2", - "p-limit": "^3.1.0", + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0", + "serialize-javascript": "^5.0.1", "source-map": "^0.6.1", - "terser": "^5.7.0" + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -13358,6 +12998,25 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } } } }, @@ -13373,12 +13032,57 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", @@ -13399,6 +13103,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -13481,11 +13191,23 @@ "yn": "^3.0.0" } }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -13517,6 +13239,12 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typescript": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", @@ -13569,12 +13297,6 @@ "set-value": "^2.0.1" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", @@ -13690,88 +13412,365 @@ } } }, - "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, + "url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/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" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/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", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/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" + } + } + } + }, "wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -13801,94 +13800,451 @@ } }, "webpack": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", - "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.0", - "es-module-lexer": "^0.7.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/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" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "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": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } }, "webpack-dev-middleware": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz", - "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "dev": true, "requires": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" + "webpack-log": "^2.0.0" }, "dependencies": { - "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, - "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dev": true, - "requires": { - "mime-db": "1.50.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "minimist": "^1.2.5" } } } @@ -14117,21 +14473,6 @@ "to-regex": "^3.0.2" } }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -14211,19 +14552,6 @@ "is-number": "^3.0.0", "repeat-string": "^1.6.1" } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } } } }, @@ -14246,9 +14574,9 @@ } }, "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -14256,13 +14584,13 @@ } }, "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -14280,6 +14608,24 @@ "dev": true, "requires": { "webpack-sources": "^1.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } } }, "websocket-driver": { @@ -14299,6 +14645,12 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -14362,6 +14714,46 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", + "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -14444,6 +14836,12 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", @@ -14562,6 +14960,14 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, "yn": { diff --git a/package.json b/package.json index d0ec2a79..e1e7d4f5 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^12.2.9", + "@angular-devkit/build-angular": "^0.1102.14", "@angular/cli": "^12.2.9", "@angular/compiler-cli": "^12.2.9", "@types/jasmine": "^3.9.1", From 32ed6a26fad2ae5ba1cf0095c34e6f77b2a62cfe Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Thu, 14 Oct 2021 09:21:23 +0200 Subject: [PATCH 004/242] update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c2d15985..66f99e8f 100644 --- a/README.md +++ b/README.md @@ -98,13 +98,13 @@ npm install Build and open the modeler in your browser: ``` -npm run dev +npm run start ``` Create distributable bundle: ``` -npm run all +npm run build ``` ## License From 2de4edbfbafdee3eabf406dbf3532000cda84154 Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Mon, 25 Oct 2021 13:42:07 +0200 Subject: [PATCH 005/242] Update header-buttons.component.scss --- src/app/header/component/header-buttons.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/header/component/header-buttons.component.scss b/src/app/header/component/header-buttons.component.scss index 4912058a..9e7bf07e 100644 --- a/src/app/header/component/header-buttons.component.scss +++ b/src/app/header/component/header-buttons.component.scss @@ -31,7 +31,7 @@ span { } .borderRight { - border-right: black solid 2px !important; + border-right: #666666 solid 2px !important; } #buttonImport, From d8453246b61612f741b15a07ade3d1aed91e2814 Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Thu, 28 Oct 2021 13:34:06 +0200 Subject: [PATCH 006/242] WIP domain Configuration --- .gitignore | 1 + .idea/inspectionProfiles/Project_Default.xml | 13 +--- .idea/modules.xml | 2 +- .../domain-configuration.component.html | 76 ++++++++++++++++--- .../domain-configuration.component.scss | 69 +++++++++-------- .../domain-configuration.component.ts | 73 +++++++++++++++++- .../icon-list-item.component.html | 1 + .../icon-list-item.component.scss | 0 .../icon-list-item.component.spec.ts | 25 ++++++ .../icon-list-item.component.ts | 19 +++++ .../domain/iconFilterEnum.ts | 6 ++ .../domain/iconListItem.ts | 8 ++ .../component/settings.component.html | 6 +- src/app/settings-module/settings.module.ts | 6 +- 14 files changed, 243 insertions(+), 62 deletions(-) create mode 100644 src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html create mode 100644 src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss create mode 100644 src/app/domain-configuration/component/icon-list-item/icon-list-item.component.spec.ts create mode 100644 src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts create mode 100644 src/app/domain-configuration/domain/iconFilterEnum.ts create mode 100644 src/app/domain-configuration/domain/iconListItem.ts diff --git a/.gitignore b/.gitignore index 4bf4cb35..a36422b6 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ testem.log # System Files .DS_Store Thumbs.db +*.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 574a3ea0..03d9549e 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -1,17 +1,6 @@ \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 90bf723a..f7108d26 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index f69b9267..e2a3352d 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -1,6 +1,7 @@
-
- -
- + - -
+
+
+ +
+ + + + + +
+
+
+
+
+
+
+
+ + diff --git a/src/app/domain-configuration/component/domain-configuration.component.scss b/src/app/domain-configuration/component/domain-configuration.component.scss index b393da8d..e91d14c3 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.scss +++ b/src/app/domain-configuration/component/domain-configuration.component.scss @@ -1,56 +1,63 @@ .header { display: grid; - grid-template-columns: 90px auto 60px 55px auto 60px 60px; + grid-template-columns: 120px auto 120px 120px auto 130px 130px 140px; + border-bottom: #ccc 2px solid; + margin-bottom: 2px; +} + +.mat-button { + color: #666666; +} + +#line { + padding: 2px; + position: relative; + right: 0; + left: 0; + width: 100%; + border-bottom: solid 2px #ccc; + margin-top: -5px; } .domainConfiguration { display: grid; - grid-template-columns: 50% 50%; + grid-template-columns: 70% 30%; height: calc(100vh - 100px); padding-left: 5px; padding-bottom: 5px; margin-bottom: 100px; + grid-column-gap: 2px; } -.allIconsHeader { +.icons { display: grid; - grid-template-columns: 50% 1px 25% 1px auto; + grid-template-rows: 2rem auto; + height: 100%; + grid-row-gap: 1px; } -.listEntry { - position: relative; - display: grid; - grid-template-columns: 50% 1px 25% 1px auto; +.searchbar { + display: grid; + grid-template-columns: 300px 10px 150px 170px 170px auto; } -.allIcons { - overflow-y: auto; +.textInput { + width: 300px; + margin-top: 5px; } -.selectedIcons { - display: grid; - grid-template-rows: 50% 1px auto; - overflow-y: auto; - overflow-x: hidden; - padding-left: 10px; +.iconFilter { + color: darkgray; } -.icon { - width: 36px; - height: 36px; +.iconList { + display: grid; } -#line { - padding: 2px; - position: relative; - right: 0; - left: 0; - width: 100%; - border-bottom: solid 2px #ccc; - margin-top: -5px; -} -.divider { - border-left: solid 1px #ccc; - margin-right: 5px; +.details { + display: grid; + grid-template-rows: 10% 45% 45%; + height: 100%; + grid-row-gap: 1px; } diff --git a/src/app/domain-configuration/component/domain-configuration.component.ts b/src/app/domain-configuration/component/domain-configuration.component.ts index bdc00f67..25836645 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.ts +++ b/src/app/domain-configuration/component/domain-configuration.component.ts @@ -9,12 +9,14 @@ import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; import { BehaviorSubject } from 'rxjs'; -import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; +import {Dictionary} from 'src/app/common/domain/dictionary/dictionary'; import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; import { elementTypes } from 'src/app/common/domain/elementTypes'; import { getNameFromType } from 'src/app/common/util/naming'; import { sanitizeIconName } from 'src/app/common/util/sanitizer'; import { ModelerService } from 'src/app/modeler/service/modeler.service'; +import {IconListItem} from "../domain/iconListItem"; +import {IconFilterEnum} from "../domain/iconFilterEnum"; @Component({ selector: 'app-domain-configuration', @@ -27,12 +29,15 @@ export class DomainConfigurationComponent implements OnInit { private configurationHasChanged = false; + public filter = new BehaviorSubject(IconFilterEnum.ICON_FILTER_NONE); + selectedActors = new BehaviorSubject([]); selectedWorkobjects = new BehaviorSubject([]); name = new BehaviorSubject(''); allIcons: Dictionary; allIconNames = new BehaviorSubject([]); + allFilteredIconNames = new BehaviorSubject([]); @Output() domainConfigurationEvent = new EventEmitter(); @@ -58,7 +63,32 @@ export class DomainConfigurationComponent implements OnInit { this.selectedActors.next(this.domainConfigurationTypes?.actors); } - ngOnInit(): void {} + ngOnInit(): void { + this.filter.subscribe(type => { + let allFiltered = this.getFilteredNamesForType(type); + this.allFilteredIconNames.next(allFiltered); + }); + } + + private getFilteredNamesForType(type: IconFilterEnum): string[] { + let allFiltered: string[] = []; + switch (type) { + case IconFilterEnum.ICON_FILTER_NONE: + allFiltered = this.allIconNames.value; + break; + case IconFilterEnum.ICON_FILTER_ACTOR: + allFiltered = this.allIconNames.value.filter(name => this.checkForActor(name)); + break; + case IconFilterEnum.ICON_FILTER_WORKOBJECT: + allFiltered = this.allIconNames.value.filter(name => this.checkForWorkObject(name)); + break; + case IconFilterEnum.ICON_FILTER_UNASSIGNED: + allFiltered = this.allIconNames.value.filter(name => + !this.checkForActor(name) && !this.checkForWorkObject(name)); + break; + } + return allFiltered; + } checkForActor(iconName: string): boolean { return ( @@ -285,4 +315,43 @@ export class DomainConfigurationComponent implements OnInit { this.updateActorSubject(); this.updateWorkObjectSubject(); } + + getIconForName(iconName: string): IconListItem { + console.log(iconName) + + return {name: iconName, + svg: this.getSrcForIcon(iconName), + isActor: this.checkForActor(iconName), + isWorkObject: this.checkForWorkObject(iconName)}; + } + + filterForActors(): void { + if(this.filter.value !== IconFilterEnum.ICON_FILTER_ACTOR) { + this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR) + } else { + this.filter.next(IconFilterEnum.ICON_FILTER_NONE); + } + } + + filterForWorkobjects(): void { + if(this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) { + this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT) + } else { + this.filter.next(IconFilterEnum.ICON_FILTER_NONE); + } + } + + filterForUnassigned(): void { + if(this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) { + this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED) + } else { + this.filter.next(IconFilterEnum.ICON_FILTER_NONE); + } + } + + filterByNameAndType($event: any) { + const filteredByNameAndType = this.getFilteredNamesForType(this.filter.value) + .filter(name => name.toLowerCase().includes($event.target.value.toLowerCase())); + this.allFilteredIconNames.next(filteredByNameAndType); + } } diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html new file mode 100644 index 00000000..dccfd003 --- /dev/null +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html @@ -0,0 +1 @@ +

icon-list-item works!

diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.spec.ts b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.spec.ts new file mode 100644 index 00000000..32afb196 --- /dev/null +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { IconListItemComponent } from './icon-list-item.component'; + +describe('IconListItemComponent', () => { + let component: IconListItemComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ IconListItemComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(IconListItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts new file mode 100644 index 00000000..c8693f00 --- /dev/null +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts @@ -0,0 +1,19 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {IconListItem} from "../../domain/iconListItem"; + +@Component({ + selector: 'app-icon-list-item', + templateUrl: './icon-list-item.component.html', + styleUrls: ['./icon-list-item.component.scss'] +}) +export class IconListItemComponent implements OnInit { + + @Input() + icon: IconListItem = {name: "", isWorkObject: false, isActor: false, svg: ""}; + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/domain-configuration/domain/iconFilterEnum.ts b/src/app/domain-configuration/domain/iconFilterEnum.ts new file mode 100644 index 00000000..572544a6 --- /dev/null +++ b/src/app/domain-configuration/domain/iconFilterEnum.ts @@ -0,0 +1,6 @@ +export enum IconFilterEnum { + ICON_FILTER_ACTOR = "ICON_FILTER_ACTOR", +ICON_FILTER_WORKOBJECT = "ICON_FILTER_WORKOBJECT", +ICON_FILTER_UNASSIGNED = "ICON_FILTER_UNASSIGNED", +ICON_FILTER_NONE = "ICON_FILTER_NONE", +} diff --git a/src/app/domain-configuration/domain/iconListItem.ts b/src/app/domain-configuration/domain/iconListItem.ts new file mode 100644 index 00000000..4862c008 --- /dev/null +++ b/src/app/domain-configuration/domain/iconListItem.ts @@ -0,0 +1,8 @@ +import {SafeUrl} from "@angular/platform-browser"; + +export interface IconListItem { + name: string, + svg: SafeUrl, + isActor: boolean, + isWorkObject: boolean +} diff --git a/src/app/settings-module/component/settings.component.html b/src/app/settings-module/component/settings.component.html index 8ff29751..0bf5387d 100644 --- a/src/app/settings-module/component/settings.component.html +++ b/src/app/settings-module/component/settings.component.html @@ -16,15 +16,15 @@ - - - + + + diff --git a/src/app/settings-module/settings.module.ts b/src/app/settings-module/settings.module.ts index 0750ed43..444853f5 100644 --- a/src/app/settings-module/settings.module.ts +++ b/src/app/settings-module/settings.module.ts @@ -4,6 +4,9 @@ import { DomainConfigurationComponent } from 'src/app/domain-configuration/compo import { GeneralSettingsComponent } from 'src/app/general-settings/component/general-settings.component'; import { LabelDictionaryComponent } from 'src/app/label-dictionary/component/label-dictionary.component'; import { AutosaveSettingsComponent } from '../autosave/autosave-settings-component/autosave-settings.component'; +import {MatButtonModule} from "@angular/material/button"; +import {MatGridListModule} from "@angular/material/grid-list"; +import {IconListItemComponent} from "../domain-configuration/component/icon-list-item/icon-list-item.component"; @NgModule({ declarations: [ @@ -11,6 +14,7 @@ import { AutosaveSettingsComponent } from '../autosave/autosave-settings-compone GeneralSettingsComponent, LabelDictionaryComponent, AutosaveSettingsComponent, + IconListItemComponent ], exports: [ AutosaveSettingsComponent, @@ -18,6 +22,6 @@ import { AutosaveSettingsComponent } from '../autosave/autosave-settings-compone DomainConfigurationComponent, LabelDictionaryComponent, ], - imports: [CommonModule], + imports: [CommonModule, MatButtonModule, MatGridListModule], }) export class SettingsModule {} From c14f0a91d2034ef8f6c1cbf9ff83d0a125c74646 Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Mon, 22 Nov 2021 13:44:53 +0100 Subject: [PATCH 007/242] Font-fallback --- src/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles.scss b/src/styles.scss index 02c3c6ab..5a0231b6 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -43,7 +43,7 @@ body { } body { margin: 0; - font-family: Roboto, "Helvetica Neue", sans-serif; + font-family: Roboto, "Helvetica Neue", Arial, sans-serif; } app-root { From 06df502ee3dcbb599052974a2114fb26b4f0e3bb Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 09:42:01 +0100 Subject: [PATCH 008/242] npm update & audit fix --- .gitignore | 2 +- package-lock.json | 2972 +++++++++++++++++++++++---------------------- package.json | 34 +- 3 files changed, 1548 insertions(+), 1460 deletions(-) diff --git a/.gitignore b/.gitignore index a36422b6..ac18505e 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ speed-measure-plugin*.json # IDEs and editors /.project -.idea/ +.idea .classpath .c9/ *.launch diff --git a/package-lock.json b/package-lock.json index d403c383..9ea36696 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,25 +5,42 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.1202.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.9.tgz", - "integrity": "sha512-s2NcFqZjsdYoR0vhJWLCwykF6hG7F0C5fJJs49i6IJMKj5Ai58z7d2IFYvD8nA60paMvjFS14OQ+E/FEEEZ88Q==", + "version": "0.1102.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.15.tgz", + "integrity": "sha512-d6MKQc54HEsWVsFPipoPD7H3kNpsdpksDJyx4D9YWA2NYLbby9HTgBtp1x53glb0ipKRzzYGIr5BurFIMmxYzA==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.9", - "rxjs": "6.6.7" + "@angular-devkit/core": "11.2.15", + "rxjs": "6.6.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/build-angular": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.14.tgz", - "integrity": "sha512-SyX9SK3qfpk6xNIrxpxYi8zxP/cN2kny4I+XYbkKvgGiE3qhkrC/PRJE9OWj0sloekLD0CDfFWOvIiw3GMc4Tg==", + "version": "0.1102.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.15.tgz", + "integrity": "sha512-qE5BF8tluirGIcPdSJechTCqmfRNKNwez8HgG6iR2hKbMcAVx8IYYdr1XKnQifZhGF8C1FSnJzOoR9IUfm3MmA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1102.14", - "@angular-devkit/build-optimizer": "0.1102.14", - "@angular-devkit/build-webpack": "0.1102.14", - "@angular-devkit/core": "11.2.14", + "@angular-devkit/architect": "0.1102.15", + "@angular-devkit/build-optimizer": "0.1102.15", + "@angular-devkit/build-webpack": "0.1102.15", + "@angular-devkit/core": "11.2.15", "@babel/core": "7.12.10", "@babel/generator": "7.12.11", "@babel/plugin-transform-async-to-generator": "7.12.1", @@ -33,7 +50,7 @@ "@babel/template": "7.12.7", "@discoveryjs/json-ext": "0.5.2", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "11.2.14", + "@ngtools/webpack": "11.2.15", "ansi-colors": "4.1.1", "autoprefixer": "10.2.4", "babel-loader": "8.2.2", @@ -43,7 +60,7 @@ "circular-dependency-plugin": "5.2.2", "copy-webpack-plugin": "6.3.2", "core-js": "3.8.3", - "critters": "0.0.7", + "critters": "0.0.12", "css-loader": "5.0.1", "cssnano": "5.0.2", "file-loader": "6.2.0", @@ -95,115 +112,12 @@ "worker-plugin": "5.0.0" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.14.tgz", - "integrity": "sha512-965TVXuBtRb8RySgxRxUEO+YTd7mT0xiqVHSe+MHvMtUCmEE9vwRofFZl6axkK5ri4fiomiMnOVE19aw4spgNQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.14", - "rxjs": "6.6.3" - } - }, - "@angular-devkit/core": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", - "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", - "dev": true, - "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.0", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, "jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -215,32 +129,6 @@ "supports-color": "^7.0.0" } }, - "open": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", - "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, "rxjs": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", @@ -250,15 +138,6 @@ "tslib": "^1.9.0" } }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -277,9 +156,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.14.tgz", - "integrity": "sha512-1j69rFqE6tPMO0lQvOH8ogF7vE+p+Ws1/OtdZKUkZPOerIbQ8A3n5wzCx6/ZzMVhBQ3sXNhaShb4b9/1YuwU/g==", + "version": "0.1102.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.15.tgz", + "integrity": "sha512-MFW4H25BE1tW6kC7DhNbAjNUNd/w71vO1g8P8OG1mWUVSKkv2W+WhPjwLqZ3TlHbSXiV9OEiOFR29Gt5+5wE/Q==", "dev": true, "requires": { "loader-utils": "2.0.0", @@ -304,39 +183,16 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.14.tgz", - "integrity": "sha512-+dJvzrwjbHY0bNr8fUDVbn4D4pAT/h1YVpGVyaoX7q66LN0x61zRC3e10gJ/Mr54l3yfc26M0OPD9KG8iZRbCA==", + "version": "0.1102.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.15.tgz", + "integrity": "sha512-/eNooHvpSCU4o+dKb/hy776J8Yb9mgZHCTu4O4+9JNUtgN2Ic1po091TiZP1AEBZ5aH0FtTLy8B580ddj/lsYw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1102.14", - "@angular-devkit/core": "11.2.14", + "@angular-devkit/architect": "0.1102.15", + "@angular-devkit/core": "11.2.15", "rxjs": "6.6.3" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.1102.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.14.tgz", - "integrity": "sha512-965TVXuBtRb8RySgxRxUEO+YTd7mT0xiqVHSe+MHvMtUCmEE9vwRofFZl6axkK5ri4fiomiMnOVE19aw4spgNQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.14", - "rxjs": "6.6.3" - } - }, - "@angular-devkit/core": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", - "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, "rxjs": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", @@ -355,19 +211,60 @@ } }, "@angular-devkit/core": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.9.tgz", - "integrity": "sha512-iPHQiga08bbryiVq3QYzwpuq9sNb8CB/MVy65MHJ0fuW1z6RYDeUh1EziitBBUT2d81KWKPO1wQ2DuUoxOg4mg==", + "version": "11.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.15.tgz", + "integrity": "sha512-6pGblUHg2Hv730cHhUhauTUNbjuviAgn6n23rfYIlfEPV5uxyZib6AUTS1DTcK7ITA0D1PscSsLicMiGaqQ8OA==", "dev": true, "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", + "ajv": "6.12.6", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", - "rxjs": "6.6.7", + "rxjs": "6.6.3", "source-map": "0.7.3" }, "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.13.tgz", + "integrity": "sha512-LQTv72R5Ma1uowMEeii2wIoDWI4bYQyZvunqPy9jRveBTjli2yVwwcOziGCVyttwlYs46bSdxThgeEvVIako2w==", + "dev": true, + "requires": { + "@angular-devkit/core": "12.2.13", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.13.tgz", + "integrity": "sha512-9csMF0p+lTvlWnutxxTZ/+pDRMIbXk/TV4MGLbcqUPPfeG3dCRwErns73xLuMTwp9qO/KCLkFqNaM6cGOoqsDA==", + "dev": true, + "requires": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, "ajv": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", @@ -380,37 +277,92 @@ "uri-js": "^4.2.2" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "@angular-devkit/schematics": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.9.tgz", - "integrity": "sha512-OcMDCdlIxiir8XntrNXdXEPi9/8BRx54oYZeRosr0sJZlz4pPzsHs36t5uX2DURYYMkNNMaBnf2luUIC+77ZsA==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.9", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, "@angular/animations": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.9.tgz", - "integrity": "sha512-duGhAuXw4OtgnWi5KqS/qnnWDtvG3jbPjjalTMhFPHHdUl7p3pJ2sM9WX7Fqp3QPnxBnQ+vdgQYbfUQ7c/g2cA==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.13.tgz", + "integrity": "sha512-qpdmvu+nxsKnimJ3Hc1joNuzK7xXYyE+VtNMk4K77Ao/9+5C/juGMce85DhqZCcu1xraZ3YYIrzYmL/GgdUK4g==", "requires": { "tslib": "^2.2.0" } }, "@angular/cdk": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.9.tgz", - "integrity": "sha512-9Wgj69iGAZ4teQqW/zPbVg2RGna+m9i3v0zkWGx/+Uo95rikJCUZBQM4bfeOe+bSJrS77jV5EisBWG7ayNUSzQ==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz", + "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==", "requires": { "parse5": "^5.0.0", "tslib": "^2.2.0" @@ -425,15 +377,15 @@ } }, "@angular/cli": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.9.tgz", - "integrity": "sha512-aYAb6LkqIpKOZE8Kkhst5NNWpM4W1o1mmPTt6Nm6b/4wVLSC+mDp1IBCJSihDWysDetXA5J3kNJ4R2XnpHpIKw==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.13.tgz", + "integrity": "sha512-Yz6MuwdxxP6U2i8iRuCSNZeJxlLDPshT/joymCsFdjwSMGEH9Kk9DdvAfFYfzdHGdHbGrDdASJ4G+uALyNSLxw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1202.9", - "@angular-devkit/core": "12.2.9", - "@angular-devkit/schematics": "12.2.9", - "@schematics/angular": "12.2.9", + "@angular-devkit/architect": "0.1202.13", + "@angular-devkit/core": "12.2.13", + "@angular-devkit/schematics": "12.2.13", + "@schematics/angular": "12.2.13", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.2", @@ -451,6 +403,76 @@ "uuid": "8.3.2" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.1202.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.13.tgz", + "integrity": "sha512-LXgiidXwBgyWPqqWK4xR1/kCPQTMTzG5w+s7+LvENUZwbcdl6CKrOMjfgjo6WPr6yeq+WWQvPCD4pZ6nXRTm7A==", + "dev": true, + "requires": { + "@angular-devkit/core": "12.2.13", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.13.tgz", + "integrity": "sha512-9csMF0p+lTvlWnutxxTZ/+pDRMIbXk/TV4MGLbcqUPPfeG3dCRwErns73xLuMTwp9qO/KCLkFqNaM6cGOoqsDA==", + "dev": true, + "requires": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -460,6 +482,103 @@ "ms": "2.1.2" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "inquirer": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", + "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.3.0", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "rxjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", + "dev": true, + "requires": { + "tslib": "~2.1.0" + } + } + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "open": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", + "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -469,25 +588,25 @@ } }, "@angular/common": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.9.tgz", - "integrity": "sha512-V7leBrq80CSJWHWVE3LEL6Z6onP2ibsITY3++86Uddz8AxzfOtNRslbs4/qCWc82nT7CIEn8a28NLP/BdOwNew==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.13.tgz", + "integrity": "sha512-I1t/jl9ojCwTJKT7PKHnk23D+vMHTHS/9qZ2nndCjzGusMK8029nn8l3tHAkwefvxZWSaLAk1MgsVcP+rHQNsQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/compiler": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.9.tgz", - "integrity": "sha512-87Qn8HuQ+6ECUnapQxpgIvwuUs6i1oM6lmLSKrYe0/WpIzTabB30eXWCKfvqYrv516cMdrq+nLCIXJx1tPqzSw==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.13.tgz", + "integrity": "sha512-L0saTTJJtxldjhaGIL6b1BCfodPOEz4Wrev3pEUK5UcODooj5HLiE/aO6jiNb8M4XTbdqByKyqvZyWzGHeexVQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/compiler-cli": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.9.tgz", - "integrity": "sha512-jswNKFm3MNcY4oDO/8HcFLLVxDEcTOyqp9CeKzlbjBKb04Ntjaqpm9CKzlxLOtJJj9BSMHTz1CjE0hSNv76NPg==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.13.tgz", + "integrity": "sha512-qmnmihl3SCRooj/mCsNIZLtnQ6qbx1/L6aMIEQosPvQhMeGMt8GCYvQPE8IZ+sahv7fih95HCWNa9TeLpOylug==", "dev": true, "requires": { "@babel/core": "^7.8.6", @@ -588,49 +707,49 @@ } }, "@angular/core": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.9.tgz", - "integrity": "sha512-RgUmn0YM4GMcViTEkWxDVGCyz8+subF+98dJie+bwJszATMxRK2TSINEg2X/Y0LgNxpRt4mKzIK2kz62oaDH7g==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.13.tgz", + "integrity": "sha512-tZ5nAnmOi418JDaJIFiiP9z2JrluMJZvUvXO4QDUs52BXaL2yuP7MJ2LczWOVJXrBLZXeZGfjDjZmaFPA24grg==", "requires": { "tslib": "^2.2.0" } }, "@angular/forms": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.9.tgz", - "integrity": "sha512-DugLX9h/hmphjdx0wGOp9koEpzFZpcMiYXfYO2rLyzc1NwopAcbSJTCvU+adfShZgh/b5v+7rb5n10JROj/ODw==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.13.tgz", + "integrity": "sha512-wa7I5R8sck2q+VWNL262GJTVxtpEHMys8Bt6oE+lyHB5zlZAgOXwAb8GE4XVwuc+BZU1Gvrocn21P/8KvDY1uw==", "requires": { "tslib": "^2.2.0" } }, "@angular/material": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.9.tgz", - "integrity": "sha512-+eM67RF038S56m3wsj37h0PyyRD18cQ8V2zmKG1UezH0nnosbmCAwzH9BfcNiIB+/V+k5QMJ/JVu5MjDQqX37w==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.13.tgz", + "integrity": "sha512-6g2GyN4qp2D+DqY2AwrQuPB3cd9gybvQVXvNRbTPXEulHr+LgGei00ySdFHFp6RvdGSMZ4i3LM1Fq3VkFxhCfQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.9.tgz", - "integrity": "sha512-moO5Fz4b15EWYQthOaQThmy0gm/d5W/+9RmCiZs2ZHiVjuC358lnFy626VdkZmJ/MLwMwqHpyQS9JhCYOZGOdw==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.13.tgz", + "integrity": "sha512-Ua8m2GtG2msqz/Mr/MK7s8RXud554x8cup2THVAwetyTaY5th/1LOZX0hhDIhfsxBCLHnC53LRhMbSsI0cikOg==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser-dynamic": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.9.tgz", - "integrity": "sha512-bBNsq2rrL08IaVCps9j54iu3Xoxf1PkjtbEyP5EqXbjccsF7KDM32+5Cjjf0AwYtzaWbjXPSP7awAXpCCsqSdA==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.13.tgz", + "integrity": "sha512-a7y7R3vOXhMAk9uQWK5/23DefahuF0UYJSFM/wKeVo5zR+qOCVCTfafkJMcWbuZWTrSDbVafJ1xbcWnu3+TkCg==", "requires": { "tslib": "^2.2.0" } }, "@angular/router": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.9.tgz", - "integrity": "sha512-Qh7Ugh6N7PIK4+ydRPHiKy8Q3wlB/ieXVyqYgkNfGFZ+QtNHpWgWBUXJuGPnmKk0Yn02EwSPOuPWEHV92rayhw==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.13.tgz", + "integrity": "sha512-HZL/Pzp6I7fQiMLrzfEzhnqhgNcGcFjBgMMOoLp5IA1IV26rp1NU6zYJzPrXtopBx7XLl8BECehAwFqrJsu/PQ==", "requires": { "tslib": "^2.2.0" } @@ -645,9 +764,9 @@ } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { @@ -707,12 +826,12 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -722,25 +841,25 @@ "dev": true }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", - "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -750,26 +869,26 @@ "dev": true }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", + "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "dependencies": { @@ -782,96 +901,96 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -881,57 +1000,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -944,22 +1063,22 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -969,12 +1088,12 @@ "dev": true }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } @@ -1014,12 +1133,12 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -1029,12 +1148,12 @@ "dev": true }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } @@ -1103,14 +1222,14 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -1120,12 +1239,12 @@ "dev": true }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } @@ -1153,12 +1272,12 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -1168,12 +1287,12 @@ "dev": true }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } @@ -1201,64 +1320,64 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -1268,57 +1387,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -1372,30 +1491,30 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1403,9 +1522,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1413,9 +1532,9 @@ } }, "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1423,9 +1542,9 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1433,9 +1552,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1443,9 +1562,9 @@ } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1453,22 +1572,22 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -1476,33 +1595,33 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, @@ -1615,9 +1734,9 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1635,115 +1754,115 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -1753,57 +1872,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -1816,98 +1935,98 @@ } }, "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", + "@babel/helper-function-name": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -1917,185 +2036,185 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } } } }, "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -2105,57 +2224,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -2168,128 +2287,128 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -2299,57 +2418,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -2362,129 +2481,129 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -2494,57 +2613,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -2557,126 +2676,126 @@ } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -2686,57 +2805,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -2749,110 +2868,110 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-replace-supers": "^7.16.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -2862,57 +2981,57 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -2925,36 +3044,36 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -2980,67 +3099,67 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, @@ -3127,9 +3246,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3211,6 +3330,12 @@ "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true }, + "@gar/promisify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", + "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "dev": true + }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -3231,44 +3356,14 @@ } }, "@ngtools/webpack": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.14.tgz", - "integrity": "sha512-6q57tEWtUJRsxfTKE19L20iXvNesfVy8hrVdyzVk64DZQh0lIl4/xZT4d5bJCWOuQQDaAeZK4YbEFcYJn7k1yw==", + "version": "11.2.15", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.15.tgz", + "integrity": "sha512-uy+ekGlgReO/4N5Ifmd4Dh1s0BTvbvMnjTrSUzmPnaeCjg4zjosA3gcdv+33duQ1Y2ythDSnf2MPYRN9q3tzgQ==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.14", + "@angular-devkit/core": "11.2.15", "enhanced-resolve": "5.7.0", "webpack-sources": "2.2.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.14.tgz", - "integrity": "sha512-Ad1fHqLxDwhkQgLPqq9i+G65NSOoIHXQx7ILcSPACKurV3XLS1RO9BgP/BDaqHAG+WslUAPbMStaTzzPm+9dNw==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } } }, "@nodelib/fs.scandir": { @@ -3297,6 +3392,27 @@ "fastq": "^1.6.0" } }, + "@npmcli/fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz", + "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "@npmcli/git": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", @@ -3313,6 +3429,15 @@ "which": "^2.0.2" }, "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3372,14 +3497,48 @@ } }, "@schematics/angular": { - "version": "12.2.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.9.tgz", - "integrity": "sha512-IIczXVwegREekub0+bBxOc0dDL7j8p5rG6rB/2btJRR+tg04milP+BkvnQgksmIkW1OcZ5beRSB37R3jY/W/PA==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.13.tgz", + "integrity": "sha512-TrigQ9TCmAedf1J5PSSSfTC+sScYrITeAUN8a9rlkjZNvff8hHVyQaiZmhqL+egKQL828mhkqpnFUDd4QsPBIw==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.9", - "@angular-devkit/schematics": "12.2.9", + "@angular-devkit/core": "12.2.13", + "@angular-devkit/schematics": "12.2.13", "jsonc-parser": "3.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.13.tgz", + "integrity": "sha512-9csMF0p+lTvlWnutxxTZ/+pDRMIbXk/TV4MGLbcqUPPfeG3dCRwErns73xLuMTwp9qO/KCLkFqNaM6cGOoqsDA==", + "dev": true, + "requires": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "@tootallnate/once": { @@ -3413,9 +3572,9 @@ "dev": true }, "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -3423,9 +3582,9 @@ } }, "@types/jasmine": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.9.1.tgz", - "integrity": "sha512-PVpjh8S8lqKFKurWSKdFATlfBHGPzgy0PoDdzQ+rr78jTQ0aacyh9YndzZcAUPxhk4kRujItFFGQdUJ7flHumw==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.2.tgz", + "integrity": "sha512-qs4xjVm4V/XjM6owGm/x6TNmhGl5iKX8dkTdsgdgl9oFnqgzxLepnS7rN9Tdo7kDmnFD/VEqKrW57cGD2odbEg==", "dev": true }, "@types/json-schema": { @@ -3441,9 +3600,9 @@ "dev": true }, "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==" + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==" }, "@types/parse-json": { "version": "4.0.0", @@ -3777,9 +3936,9 @@ }, "dependencies": { "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -4351,13 +4510,13 @@ "dev": true }, "bpmn-js": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-8.7.3.tgz", - "integrity": "sha512-4Xni4dApvVA8Iz3K9y1peE8oxmziAKY5Oi8BSpFRC2fbL8KEU2m4Dpz+yVdKBVGSTGbQdm1HP2YIb341UBtaDA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-8.8.2.tgz", + "integrity": "sha512-PnnbYxnQ2btaUzayI+vM9JOdCal46rjSOctjg0Op4psUr7/AIzTnN2/d7BvbeetLZ1GaZ2Z5DmWxIOcsabQZdQ==", "requires": { "bpmn-moddle": "^7.1.2", "css.escape": "^1.5.1", - "diagram-js": "^7.3.0", + "diagram-js": "^7.5.0", "diagram-js-direct-editing": "^1.6.3", "ids": "^1.0.0", "inherits": "^2.0.4", @@ -4484,16 +4643,16 @@ } }, "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "browserstack": { @@ -4582,9 +4741,9 @@ "dev": true }, "cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { "@npmcli/move-file": "^1.0.1", @@ -4601,7 +4760,7 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", + "ssri": "^8.0.0", "tar": "^6.0.2", "unique-filename": "^1.1.1" } @@ -4640,9 +4799,9 @@ "dev": true }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", "dev": true }, "caniuse-api": { @@ -4658,9 +4817,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", "dev": true }, "canonical-path": { @@ -4946,9 +5105,9 @@ "dev": true }, "colord": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", - "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==", "dev": true }, "colorette": { @@ -5282,12 +5441,12 @@ "dev": true }, "core-js-compat": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.2.tgz", - "integrity": "sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.17.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -5374,15 +5533,16 @@ } }, "critters": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", - "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz", + "integrity": "sha512-ujxKtKc/mWpjrOKeaACTaQ1aP0O31M0ZPWhfl85jZF1smPU4Ivb9va5Ox2poif4zVJQQo0LCFlzGtEZAsCAPcw==", "dev": true, "requires": { "chalk": "^4.1.0", - "css": "^3.0.0", + "css-select": "^4.1.3", "parse5": "^6.0.1", "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", "pretty-bytes": "^5.3.0" }, "dependencies": { @@ -5426,6 +5586,17 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "postcss": { + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^0.6.2" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5478,14 +5649,15 @@ } }, "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "dev": true, "requires": { - "inherits": "^2.0.4", + "inherits": "^2.0.3", "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" }, "dependencies": { "source-map": { @@ -5496,12 +5668,6 @@ } } }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true - }, "css-declaration-sorter": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", @@ -5551,39 +5717,6 @@ "dev": true, "requires": { "css": "^2.0.0" - }, - "dependencies": { - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } } }, "css-select": { @@ -5628,9 +5761,9 @@ } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "css.escape": { @@ -5665,25 +5798,25 @@ } }, "cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz", + "integrity": "sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA==", "dev": true, "requires": { "css-declaration-sorter": "^6.0.3", "cssnano-utils": "^2.0.1", "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", + "postcss-colormin": "^5.2.1", + "postcss-convert-values": "^5.0.2", "postcss-discard-comments": "^5.0.1", "postcss-discard-duplicates": "^5.0.1", "postcss-discard-empty": "^5.0.1", "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", + "postcss-merge-longhand": "^5.0.4", + "postcss-merge-rules": "^5.0.3", "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", + "postcss-minify-gradients": "^5.0.3", + "postcss-minify-params": "^5.0.2", "postcss-minify-selectors": "^5.1.0", "postcss-normalize-charset": "^5.0.1", "postcss-normalize-display-values": "^5.0.1", @@ -5692,13 +5825,13 @@ "postcss-normalize-string": "^5.0.1", "postcss-normalize-timing-functions": "^5.0.1", "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", + "postcss-normalize-url": "^5.0.3", "postcss-normalize-whitespace": "^5.0.1", "postcss-ordered-values": "^5.0.2", "postcss-reduce-initial": "^5.0.1", "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" + "postcss-svgo": "^5.0.3", + "postcss-unique-selectors": "^5.0.2" } }, "cssnano-utils": { @@ -5974,9 +6107,9 @@ "dev": true }, "diagram-js": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-7.4.1.tgz", - "integrity": "sha512-y21FjCo9QZJmH0g20ELYGv9+ps5AV52JEhsUroT4zJCwd28stjICGJMK/1VDnHhRqijjOp9Q/SLSwIa6k5/RlQ==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-7.8.1.tgz", + "integrity": "sha512-Ziy5vTmB8V/kxuhgxQXdnNxSYnqlWxFrBih37MOOglDzyQ5mBIA8tFNssp/ncHpZmhTGC8sb54lYknovzyrrzg==", "requires": { "css.escape": "^1.5.1", "didi": "^5.2.1", @@ -6182,9 +6315,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.861", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==", + "version": "1.3.906", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.906.tgz", + "integrity": "sha512-UjoECdcOYIVzWmrbtNnYpPrDuu+RtiO5W08Vdbid9ydGQMSdnqtJUtvOqQEAVQqpoXN9kSW9YnQufvzLQMYQOw==", "dev": true }, "elliptic": { @@ -6402,9 +6535,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -6926,9 +7059,9 @@ "dev": true }, "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==", "dev": true }, "fragment-cache": { @@ -7675,9 +7808,9 @@ "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "ignore-walk": { @@ -7812,22 +7945,21 @@ "dev": true }, "inquirer": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", - "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.21", + "lodash": "^4.17.19", "mute-stream": "0.0.8", - "ora": "^5.3.0", "run-async": "^2.4.0", - "rxjs": "^7.2.0", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -7873,15 +8005,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "dev": true, - "requires": { - "tslib": "~2.1.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7890,12 +8013,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true } } }, @@ -7985,9 +8102,9 @@ "dev": true }, "is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "requires": { "has": "^1.0.3" @@ -8334,9 +8451,9 @@ "dev": true }, "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8679,9 +8796,9 @@ "dev": true }, "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, "less": { @@ -8797,9 +8914,9 @@ } }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "loader-runner": { @@ -8921,9 +9038,9 @@ } }, "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", "dev": true }, "lru-cache": { @@ -8989,6 +9106,34 @@ "promise-retry": "^2.0.1", "socks-proxy-agent": "^6.0.0", "ssri": "^8.0.0" + }, + "dependencies": { + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + } } }, "map-cache": { @@ -9463,16 +9608,10 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", - "dev": true - }, "nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", "dev": true }, "nanomatch": { @@ -9653,9 +9792,9 @@ } }, "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "nopt": { @@ -9928,14 +10067,13 @@ } }, "open": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", - "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", "dev": true, "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" } }, "opn": { @@ -9956,18 +10094,17 @@ } }, "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "requires": { - "bl": "^4.1.0", + "bl": "^4.0.3", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", + "log-symbols": "^4.0.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, @@ -10327,9 +10464,9 @@ "dev": true }, "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -10444,21 +10581,21 @@ } }, "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", + "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "colord": "^2.0.1", + "colord": "^2.9.1", "postcss-value-parser": "^4.1.0" } }, "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", "dev": true, "requires": { "postcss-value-parser": "^4.1.0" @@ -10526,27 +10663,25 @@ } }, "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz", + "integrity": "sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==", "dev": true, "requires": { - "css-color-names": "^1.0.1", "postcss-value-parser": "^4.1.0", "stylehacks": "^5.0.1" } }, "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz", + "integrity": "sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" + "postcss-selector-parser": "^6.0.5" } }, "postcss-minify-font-values": { @@ -10559,27 +10694,26 @@ } }, "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", + "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", "dev": true, "requires": { - "colord": "^2.6", + "colord": "^2.9.1", "cssnano-utils": "^2.0.1", "postcss-value-parser": "^4.1.0" } }, "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz", + "integrity": "sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg==", "dev": true, "requires": { "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", + "browserslist": "^4.16.6", "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-selectors": { @@ -10692,9 +10826,9 @@ } }, "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz", + "integrity": "sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg==", "dev": true, "requires": { "is-absolute-url": "^3.0.3", @@ -10752,24 +10886,23 @@ } }, "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", "dev": true, "requires": { "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "svgo": "^2.7.0" } }, "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz", + "integrity": "sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==", "dev": true, "requires": { "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" + "postcss-selector-parser": "^6.0.5" } }, "postcss-value-parser": { @@ -10900,8 +11033,7 @@ "dependencies": { "ansi-regex": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "resolved": "", "dev": true }, "strip-ansi": { @@ -11078,8 +11210,7 @@ "dependencies": { "ansi-regex": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "resolved": "", "dev": true }, "ansi-styles": { @@ -11596,6 +11727,12 @@ "source-map": "0.6.1" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -11880,9 +12017,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -12110,9 +12247,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, "slash": { @@ -12181,19 +12318,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } } } }, @@ -12349,9 +12473,9 @@ } }, "socks-proxy-agent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", - "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", "dev": true, "requires": { "agent-base": "^6.0.2", @@ -12371,6 +12495,12 @@ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, "source-map-loader": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", @@ -12414,13 +12544,16 @@ } }, "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { @@ -12880,9 +13013,9 @@ } }, "svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", - "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "requires": { "@trysound/sax": "0.2.0", @@ -12890,7 +13023,7 @@ "css-select": "^4.1.3", "css-tree": "^1.1.3", "csso": "^4.2.0", - "nanocolors": "^0.1.12", + "picocolors": "^1.0.0", "stable": "^0.1.8" }, "dependencies": { @@ -13297,12 +13430,6 @@ "set-value": "^2.0.1" } }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -13478,12 +13605,6 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -14233,9 +14354,9 @@ }, "dependencies": { "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, "mkdirp": { @@ -14667,45 +14788,12 @@ "dev": true }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "wildcard": { diff --git a/package.json b/package.json index e1e7d4f5..b8e812c4 100644 --- a/package.json +++ b/package.json @@ -12,19 +12,19 @@ }, "private": true, "dependencies": { - "@angular/animations": "^12.2.9", - "@angular/cdk": "^12.2.9", - "@angular/common": "^12.2.9", - "@angular/compiler": "^12.2.9", - "@angular/core": "^12.2.9", - "@angular/forms": "^12.2.9", - "@angular/material": "^12.2.9", - "@angular/platform-browser": "^12.2.9", - "@angular/platform-browser-dynamic": "^12.2.9", - "@angular/router": "^12.2.9", - "bpmn-js": "^8.7.3", + "@angular/animations": "^12.2.13", + "@angular/cdk": "^12.2.13", + "@angular/common": "^12.2.13", + "@angular/compiler": "^12.2.13", + "@angular/core": "^12.2.13", + "@angular/forms": "^12.2.13", + "@angular/material": "^12.2.13", + "@angular/platform-browser": "^12.2.13", + "@angular/platform-browser-dynamic": "^12.2.13", + "@angular/router": "^12.2.13", + "bpmn-js": "^8.8.2", "dot": "^1.1.3", - "jest-worker": "^27.2.4", + "jest-worker": "^27.3.1", "material-design-icons": "^3.0.1", "min-dash": "^3.8.0", "ng-mocks": "^12.5.0", @@ -33,11 +33,11 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.1102.14", - "@angular/cli": "^12.2.9", - "@angular/compiler-cli": "^12.2.9", - "@types/jasmine": "^3.9.1", - "@types/node": "^12.20.28", + "@angular-devkit/build-angular": "^0.1102.15", + "@angular/cli": "^12.2.13", + "@angular/compiler-cli": "^12.2.13", + "@types/jasmine": "^3.10.2", + "@types/node": "^12.20.37", "codelyzer": "^6.0.2", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", From 06fe1dccaca7cc8cf05606254d5855b162ef0f41 Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 11:39:16 +0100 Subject: [PATCH 009/242] Domain Configuration shows Icons and initial Selection --- src/app/app.component.scss | 7 ++ .../domain-configuration.component.html | 70 +----------------- .../domain-configuration.component.ts | 68 +++++++++--------- .../icon-list-item.component.html | 20 +++++- .../icon-list-item.component.scss | 28 ++++++++ .../icon-list-item.component.ts | 71 +++++++++++++++++-- src/app/settings-module/settings.module.ts | 10 ++- 7 files changed, 164 insertions(+), 110 deletions(-) diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 84244e89..e5e950ca 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -79,3 +79,10 @@ #tab-group mat-tab-body { flex-grow: 1; } + +// Material Design Overrides +.mat-button-toggle-label-content { + font-size: 10pt !important; + padding: 0 5px !important; + line-height: inherit !important; +} diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index e2a3352d..88798ca8 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -74,13 +74,13 @@
- + - +
@@ -91,69 +91,3 @@
- - diff --git a/src/app/domain-configuration/component/domain-configuration.component.ts b/src/app/domain-configuration/component/domain-configuration.component.ts index 25836645..4e68c817 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.ts +++ b/src/app/domain-configuration/component/domain-configuration.component.ts @@ -9,14 +9,14 @@ import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; import { BehaviorSubject } from 'rxjs'; -import {Dictionary} from 'src/app/common/domain/dictionary/dictionary'; +import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; import { elementTypes } from 'src/app/common/domain/elementTypes'; import { getNameFromType } from 'src/app/common/util/naming'; import { sanitizeIconName } from 'src/app/common/util/sanitizer'; import { ModelerService } from 'src/app/modeler/service/modeler.service'; -import {IconListItem} from "../domain/iconListItem"; -import {IconFilterEnum} from "../domain/iconFilterEnum"; +import { IconListItem } from '../domain/iconListItem'; +import { IconFilterEnum } from '../domain/iconFilterEnum'; @Component({ selector: 'app-domain-configuration', @@ -29,7 +29,9 @@ export class DomainConfigurationComponent implements OnInit { private configurationHasChanged = false; - public filter = new BehaviorSubject(IconFilterEnum.ICON_FILTER_NONE); + public filter = new BehaviorSubject( + IconFilterEnum.ICON_FILTER_NONE + ); selectedActors = new BehaviorSubject([]); selectedWorkobjects = new BehaviorSubject([]); @@ -64,7 +66,7 @@ export class DomainConfigurationComponent implements OnInit { } ngOnInit(): void { - this.filter.subscribe(type => { + this.filter.subscribe((type) => { let allFiltered = this.getFilteredNamesForType(type); this.allFilteredIconNames.next(allFiltered); }); @@ -77,14 +79,19 @@ export class DomainConfigurationComponent implements OnInit { allFiltered = this.allIconNames.value; break; case IconFilterEnum.ICON_FILTER_ACTOR: - allFiltered = this.allIconNames.value.filter(name => this.checkForActor(name)); + allFiltered = this.allIconNames.value.filter((name) => + this.checkForActor(name) + ); break; case IconFilterEnum.ICON_FILTER_WORKOBJECT: - allFiltered = this.allIconNames.value.filter(name => this.checkForWorkObject(name)); + allFiltered = this.allIconNames.value.filter((name) => + this.checkForWorkObject(name) + ); break; case IconFilterEnum.ICON_FILTER_UNASSIGNED: - allFiltered = this.allIconNames.value.filter(name => - !this.checkForActor(name) && !this.checkForWorkObject(name)); + allFiltered = this.allIconNames.value.filter( + (name) => !this.checkForActor(name) && !this.checkForWorkObject(name) + ); break; } return allFiltered; @@ -285,11 +292,7 @@ export class DomainConfigurationComponent implements OnInit { reader.readAsDataURL(iconInputFile); } - getNameFromType(type: string): string { - return getNameFromType(type); - } - - getSrcForIcon(name: string): SafeUrl { + getSrcForIcon(name: string): string { let iconName = ''; if (name.includes(elementTypes.DOMAINSTORY)) { iconName = getNameFromType(name); @@ -303,11 +306,9 @@ export class DomainConfigurationComponent implements OnInit { } if (rawSrc.startsWith('data')) { - return this.domSanitizer.bypassSecurityTrustUrl(rawSrc); + return rawSrc; } else { - return this.domSanitizer.bypassSecurityTrustUrl( - 'data:image/svg+xml,' + rawSrc - ); + return 'data:image/svg+xml,' + rawSrc; } } @@ -317,41 +318,44 @@ export class DomainConfigurationComponent implements OnInit { } getIconForName(iconName: string): IconListItem { - console.log(iconName) - - return {name: iconName, - svg: this.getSrcForIcon(iconName), - isActor: this.checkForActor(iconName), - isWorkObject: this.checkForWorkObject(iconName)}; + return { + name: iconName, + svg: this.getSrcForIcon(iconName), + isActor: this.checkForActor(iconName), + isWorkObject: this.checkForWorkObject(iconName), + }; } filterForActors(): void { - if(this.filter.value !== IconFilterEnum.ICON_FILTER_ACTOR) { - this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR) + if (this.filter.value !== IconFilterEnum.ICON_FILTER_ACTOR) { + this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR); } else { this.filter.next(IconFilterEnum.ICON_FILTER_NONE); } } filterForWorkobjects(): void { - if(this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) { - this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT) + if (this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) { + this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT); } else { this.filter.next(IconFilterEnum.ICON_FILTER_NONE); } } filterForUnassigned(): void { - if(this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) { - this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED) + if (this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) { + this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED); } else { this.filter.next(IconFilterEnum.ICON_FILTER_NONE); } } filterByNameAndType($event: any) { - const filteredByNameAndType = this.getFilteredNamesForType(this.filter.value) - .filter(name => name.toLowerCase().includes($event.target.value.toLowerCase())); + const filteredByNameAndType = this.getFilteredNamesForType( + this.filter.value + ).filter((name) => + name.toLowerCase().includes($event.target.value.toLowerCase()) + ); this.allFilteredIconNames.next(filteredByNameAndType); } } diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html index dccfd003..e62708bc 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html @@ -1 +1,19 @@ -

icon-list-item works!

+
+
+ +
{{name}}
+
+ +
diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss index e69de29b..14326892 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss @@ -0,0 +1,28 @@ +.IconContainer { + width: 150px; + height: 150px; +} + +.content { + display: grid; + grid-template-rows: auto auto; +} + +.icon { + width: 50px; + height: 50px; +} + +.toggleButton { + margin: 2px; +} + +.footer { + .mat-button-toggle-appearance-standard { + .mat-button-toggle-label-content { + font-size: 10pt !important; + padding: 0 5px !important; + line-height: inherit !important; + } + } +} diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts index c8693f00..2eab90be 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts @@ -1,19 +1,76 @@ -import {Component, Input, OnInit} from '@angular/core'; -import {IconListItem} from "../../domain/iconListItem"; +import { AfterViewInit, Component, Input, OnInit } from '@angular/core'; +import { IconListItem } from '../../domain/iconListItem'; +import { BehaviorSubject } from 'rxjs'; @Component({ selector: 'app-icon-list-item', templateUrl: './icon-list-item.component.html', - styleUrls: ['./icon-list-item.component.scss'] + styleUrls: ['./icon-list-item.component.scss'], }) -export class IconListItemComponent implements OnInit { - +export class IconListItemComponent implements OnInit, AfterViewInit { @Input() - icon: IconListItem = {name: "", isWorkObject: false, isActor: false, svg: ""}; + public icon: IconListItem | undefined; + + public isActor: BehaviorSubject; + public isWorkobject: BehaviorSubject; + public isNone: BehaviorSubject; - constructor() { } + constructor() { + this.isActor = new BehaviorSubject(this.icon ? this.icon.isActor : false); + this.isWorkobject = new BehaviorSubject( + this.icon ? this.icon.isWorkObject : false + ); + this.isNone = new BehaviorSubject( + !(this.icon?.isActor || this.icon?.isWorkObject) + ); + } ngOnInit(): void { + this.isActor.next(this.icon ? this.icon.isActor : false); + this.isWorkobject.next(this.icon ? this.icon.isWorkObject : false); + this.isNone.next(!(this.icon?.isActor || this.icon?.isWorkObject)); + + this.isActor.subscribe((value) => { + if (this.icon) { + this.icon.isActor = value; + } + }); + this.isWorkobject.subscribe((value) => { + if (this.icon) { + this.icon.isWorkObject = value; + } + }); } + ngAfterViewInit() { + this.createIcon(); + } + + get name(): string { + return this.icon ? this.icon.name : ''; + } + + get id() { + return 'domain-configuration-icon-' + this.icon?.name; + } + + toggleNone() { + this.isWorkobject.next(false); + this.isActor.next(false); + } + + toggleActor(): void { + this.isActor.next(true); + this.isWorkobject.next(false); + } + + toggleWorkobject(): void { + this.isWorkobject.next(true); + this.isActor.next(false); + } + + private createIcon(): void { + const img = document.getElementById(this.id) as HTMLImageElement; + img.src = '' + this.icon?.svg; + } } diff --git a/src/app/settings-module/settings.module.ts b/src/app/settings-module/settings.module.ts index 444853f5..75d654f4 100644 --- a/src/app/settings-module/settings.module.ts +++ b/src/app/settings-module/settings.module.ts @@ -7,6 +7,7 @@ import { AutosaveSettingsComponent } from '../autosave/autosave-settings-compone import {MatButtonModule} from "@angular/material/button"; import {MatGridListModule} from "@angular/material/grid-list"; import {IconListItemComponent} from "../domain-configuration/component/icon-list-item/icon-list-item.component"; +import {MatButtonToggleModule} from "@angular/material/button-toggle"; @NgModule({ declarations: [ @@ -14,7 +15,7 @@ import {IconListItemComponent} from "../domain-configuration/component/icon-list GeneralSettingsComponent, LabelDictionaryComponent, AutosaveSettingsComponent, - IconListItemComponent + IconListItemComponent, ], exports: [ AutosaveSettingsComponent, @@ -22,6 +23,11 @@ import {IconListItemComponent} from "../domain-configuration/component/icon-list DomainConfigurationComponent, LabelDictionaryComponent, ], - imports: [CommonModule, MatButtonModule, MatGridListModule], + imports: [ + CommonModule, + MatButtonModule, + MatGridListModule, + MatButtonToggleModule, + ], }) export class SettingsModule {} From 55c04c92a7d6b807d6d16ab66daf3b42da57af7d Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 11:59:36 +0100 Subject: [PATCH 010/242] Domain Configuration: Changes in Icon Selection can now be saved --- .../domain-configuration.component.html | 7 +++- .../domain-configuration.component.ts | 39 ++++++------------- .../icon-list-item.component.ts | 16 +++++++- .../service/domain-configuration.service.ts | 16 +++++++- src/app/modeler/service/modeler.service.ts | 2 +- .../component/settings.component.ts | 1 + 6 files changed, 50 insertions(+), 31 deletions(-) diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index 88798ca8..531e6355 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -80,7 +80,12 @@ [colspan]="1" [rowspan]="1" > - + diff --git a/src/app/domain-configuration/component/domain-configuration.component.ts b/src/app/domain-configuration/component/domain-configuration.component.ts index 4e68c817..c52dc063 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.ts +++ b/src/app/domain-configuration/component/domain-configuration.component.ts @@ -1,16 +1,9 @@ -import { - ChangeDetectorRef, - Component, - EventEmitter, - OnInit, - Output, -} from '@angular/core'; +import { Component, EventEmitter, OnInit, Output } from '@angular/core'; import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; import { BehaviorSubject } from 'rxjs'; import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; -import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; import { elementTypes } from 'src/app/common/domain/elementTypes'; import { getNameFromType } from 'src/app/common/util/naming'; import { sanitizeIconName } from 'src/app/common/util/sanitizer'; @@ -46,14 +39,12 @@ export class DomainConfigurationComponent implements OnInit { constructor( private modelerService: ModelerService, private configurationService: DomainConfigurationService, - private iconDictionaryService: IconDictionaryService, - private domSanitizer: DomSanitizer, - private changeDetectorRef: ChangeDetectorRef + private iconDictionaryService: IconDictionaryService ) { this.domainConfigurationTypes = - configurationService.getCurrentConfigurationNames(); + configurationService.getCurrentConfigurationNamesWithoutPrefix(); this.initialConfigurationNames = - configurationService.getCurrentConfigurationNames(); + configurationService.getCurrentConfigurationNamesWithoutPrefix(); this.allIcons = this.iconDictionaryService.getFullDictionary(); this.allIconNames.next(this.allIcons.keysArray()); @@ -113,30 +104,24 @@ export class DomainConfigurationComponent implements OnInit { ); } - private redraw(): void { - this.changeDetectorRef.detectChanges(); - } - // @ts-ignore checkActor(event, actor: string): void { - if (event.target.checked) { + if (event) { this.selectActor(actor); this.deselectWorkobject(actor); } else { this.deselectActor(actor); } - this.redraw(); } // @ts-ignore checkWorkobject(event, workobject: string): void { - if (event.target.checked) { + if (event) { this.selectWorkObject(workobject); this.deselectActor(workobject); } else { this.deselectWorkobject(workobject); } - this.redraw(); } changeName(name: string): void { @@ -159,15 +144,13 @@ export class DomainConfigurationComponent implements OnInit { selectActor(actor: string): void { // @ts-ignore - this.domainConfigurationTypes?.actors.push(elementTypes.ACTOR + actor); + this.domainConfigurationTypes?.actors.push(actor); this.updateActorSubject(); } selectWorkObject(workObject: string): void { // @ts-ignore - this.domainConfigurationTypes?.workObjects.push( - elementTypes.WORKOBJECT + workObject - ); + this.domainConfigurationTypes?.workObjects.push(workObject); this.updateWorkObjectSubject(); } @@ -209,8 +192,10 @@ export class DomainConfigurationComponent implements OnInit { saveDomain(): void { if (this.configurationHasChanged) { - this.modelerService.restart(this.createDomainConfiguration()); - this.emitDomainConfiguration(); + const domainConfiguration = this.createDomainConfiguration(); + console.log(domainConfiguration); + this.modelerService.restart(domainConfiguration); + //this.emitDomainConfiguration(); } } diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts index 2eab90be..d4eda507 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts @@ -1,4 +1,11 @@ -import { AfterViewInit, Component, Input, OnInit } from '@angular/core'; +import { + AfterViewInit, + Component, + EventEmitter, + Input, + OnInit, + Output, +} from '@angular/core'; import { IconListItem } from '../../domain/iconListItem'; import { BehaviorSubject } from 'rxjs'; @@ -11,6 +18,11 @@ export class IconListItemComponent implements OnInit, AfterViewInit { @Input() public icon: IconListItem | undefined; + @Output() + checkActorEmitter = new EventEmitter(); + @Output() + checkWorkObjectEmitter = new EventEmitter(); + public isActor: BehaviorSubject; public isWorkobject: BehaviorSubject; public isNone: BehaviorSubject; @@ -34,11 +46,13 @@ export class IconListItemComponent implements OnInit, AfterViewInit { if (this.icon) { this.icon.isActor = value; } + this.checkActorEmitter.emit(value); }); this.isWorkobject.subscribe((value) => { if (this.icon) { this.icon.isWorkObject = value; } + this.checkWorkObjectEmitter.emit(value); }); } diff --git a/src/app/domain-configuration/service/domain-configuration.service.ts b/src/app/domain-configuration/service/domain-configuration.service.ts index 89fb9fb1..0ea65f4a 100644 --- a/src/app/domain-configuration/service/domain-configuration.service.ts +++ b/src/app/domain-configuration/service/domain-configuration.service.ts @@ -111,7 +111,7 @@ export class DomainConfigurationService { return domainConfiguration; } - public getCurrentConfigurationNames(): DomainConfiguration { + public getCurrentConfigurationNamesWithPrefix(): DomainConfiguration { return { name: this.domainName || '', actors: this.iconDictionaryService.getActorsDictionary().keysArray(), @@ -121,6 +121,20 @@ export class DomainConfigurationService { }; } + public getCurrentConfigurationNamesWithoutPrefix(): DomainConfiguration { + return { + name: this.domainName || '', + actors: this.iconDictionaryService + .getActorsDictionary() + .keysArray() + .map((a) => a.replace(elementTypes.ACTOR, '')), + workObjects: this.iconDictionaryService + .getWorkObjectsDictionary() + .keysArray() + .map((w) => w.replace(elementTypes.WORKOBJECT, '')), + }; + } + private createConfigFromDictionaries( actorsDict: Dictionary, actorOrder: string[] | undefined, diff --git a/src/app/modeler/service/modeler.service.ts b/src/app/modeler/service/modeler.service.ts index 0699b10d..09531706 100644 --- a/src/app/modeler/service/modeler.service.ts +++ b/src/app/modeler/service/modeler.service.ts @@ -39,7 +39,7 @@ export class ModelerService { if (domainConfiguration) { // TODO über event? - this.iconDictionaryService.setCusomtConfiguration(domainConfiguration); + //this.iconDictionaryService.setCusomtConfiguration(domainConfiguration); // TODO über event? this.domainConfigurationService.loadConfiguration(domainConfiguration); } diff --git a/src/app/settings-module/component/settings.component.ts b/src/app/settings-module/component/settings.component.ts index 33400b85..6c3f61e3 100644 --- a/src/app/settings-module/component/settings.component.ts +++ b/src/app/settings-module/component/settings.component.ts @@ -32,6 +32,7 @@ export class SettingsComponent implements OnInit { setDomainConfiguration(domainConfiguration: DomainConfiguration): void { this.domainConfiguration = domainConfiguration; + console.log(this.domainConfiguration); } close(): void { From b18f86df6a600e1549a4b5b34c85c51704bed9ae Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 13:08:34 +0100 Subject: [PATCH 011/242] Domain-Customization: IconList-Css --- src/app/app.component.scss | 3 ++- .../component/domain-configuration.component.scss | 12 ++++++++++-- .../icon-list-item/icon-list-item.component.scss | 13 ++++++------- src/app/modeler/component/modeler.component.scss | 1 + .../component/settings.component.scss | 12 ++++++++++++ 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/app/app.component.scss b/src/app/app.component.scss index e5e950ca..b2577cd7 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -15,11 +15,11 @@ /* header and Canvas*/ .headerAndCanvas { - margin-top: 5px; height: 100%; width: 100%; display: grid; grid-template-rows: 125px 1px auto; + overflow: hidden; } .headerAndCanvasCollapsed { @@ -28,6 +28,7 @@ width: 100%; display: grid; grid-template-rows: 50px 1px auto; + overflow: hidden; } .settings { diff --git a/src/app/domain-configuration/component/domain-configuration.component.scss b/src/app/domain-configuration/component/domain-configuration.component.scss index e91d14c3..b287e229 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.scss +++ b/src/app/domain-configuration/component/domain-configuration.component.scss @@ -22,7 +22,6 @@ .domainConfiguration { display: grid; grid-template-columns: 70% 30%; - height: calc(100vh - 100px); padding-left: 5px; padding-bottom: 5px; margin-bottom: 100px; @@ -52,12 +51,21 @@ .iconList { display: grid; + overflow-y: scroll; + height: calc(100vh - 130px); } +::ng-deep.mat-grid-tile { + .mat-grid-tile-content { + + justify-content: inherit; + } +} .details { display: grid; grid-template-rows: 10% 45% 45%; - height: 100%; + height: calc(100vh - 120px); grid-row-gap: 1px; } + diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss index 14326892..f2f5a53d 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.scss @@ -6,6 +6,7 @@ .content { display: grid; grid-template-rows: auto auto; + justify-items: center; } .icon { @@ -18,11 +19,9 @@ } .footer { - .mat-button-toggle-appearance-standard { - .mat-button-toggle-label-content { - font-size: 10pt !important; - padding: 0 5px !important; - line-height: inherit !important; - } - } + ::ng-deep.mat-button-toggle-label-content { + font-size: 10pt !important; + padding: 0 5px !important; + line-height: inherit !important; + } } diff --git a/src/app/modeler/component/modeler.component.scss b/src/app/modeler/component/modeler.component.scss index f6fe8a29..67aaa189 100644 --- a/src/app/modeler/component/modeler.component.scss +++ b/src/app/modeler/component/modeler.component.scss @@ -5,4 +5,5 @@ height: 100%; position: relative; bottom: 0; + overflow: hidden; } diff --git a/src/app/settings-module/component/settings.component.scss b/src/app/settings-module/component/settings.component.scss index 5e368083..19a4fed3 100644 --- a/src/app/settings-module/component/settings.component.scss +++ b/src/app/settings-module/component/settings.component.scss @@ -2,12 +2,24 @@ display: grid; grid-template-rows: 40px auto; width: 100%; + height: 100%; } .materialIconButton { font-size: 12pt; } +.tab{ + display: inline-block; + height: calc(100% - 10px); + width: 100%; + overflow: hidden; +} + +.tabs { + overflow-y: hidden; +} + .header { display: grid; color: #666666; From 72b5ffb0cb9d32e456056dcfed28a6a6edcc46f9 Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 14:49:01 +0100 Subject: [PATCH 012/242] Domain Customization: more css --- .../domain-configuration.component.html | 8 +++---- .../domain-configuration.component.scss | 8 +++---- .../domain-configuration.component.ts | 7 ------- .../icon-list-item.component.html | 12 +++++------ .../icon-list-item.component.scss | 21 +++++++++++++++---- .../component/settings.component.html | 1 - .../component/settings.component.ts | 5 ----- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index 531e6355..6a23a501 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -62,19 +62,19 @@
- - -
- + ([]); allFilteredIconNames = new BehaviorSubject([]); - @Output() domainConfigurationEvent = new EventEmitter(); - constructor( private modelerService: ModelerService, private configurationService: DomainConfigurationService, @@ -180,10 +178,6 @@ export class DomainConfigurationComponent implements OnInit { this.updateWorkObjectSubject(); } - emitDomainConfiguration(): void { - this.domainConfigurationEvent.emit(this.domainConfigurationTypes); - } - resetDomain(): void { this.modelerService.restart( this.configurationService.createDefaultConfig() @@ -195,7 +189,6 @@ export class DomainConfigurationComponent implements OnInit { const domainConfiguration = this.createDomainConfiguration(); console.log(domainConfiguration); this.modelerService.restart(domainConfiguration); - //this.emitDomainConfiguration(); } } diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html index e62708bc..37ea59bb 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html @@ -1,17 +1,17 @@
- + {{name}}
{{name}}
-
-
-
+
+ Domain name +
+ + +
+
+ + + + + +
+
+
+ + + + + +
diff --git a/src/app/domain-configuration/component/domain-configuration.component.scss b/src/app/domain-configuration/component/domain-configuration.component.scss index 50bde816..bfc2024c 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.scss +++ b/src/app/domain-configuration/component/domain-configuration.component.scss @@ -64,7 +64,7 @@ .details { display: grid; - grid-template-rows: 10% 45% 45%; + grid-template-rows: 10% 45% auto 45%; height: calc(100vh - 120px); grid-row-gap: 1px; } diff --git a/src/app/domain-configuration/component/domain-configuration.component.ts b/src/app/domain-configuration/component/domain-configuration.component.ts index 923731ae..2ff7fa58 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.ts +++ b/src/app/domain-configuration/component/domain-configuration.component.ts @@ -10,6 +10,7 @@ import { sanitizeIconName } from 'src/app/common/util/sanitizer'; import { ModelerService } from 'src/app/modeler/service/modeler.service'; import { IconListItem } from '../domain/iconListItem'; import { IconFilterEnum } from '../domain/iconFilterEnum'; +import { TitleService } from '../../titleAndDescription/service/title.service'; @Component({ selector: 'app-domain-configuration', @@ -122,10 +123,9 @@ export class DomainConfigurationComponent implements OnInit { } } - changeName(name: string): void { - if (this.domainConfigurationTypes) { - this.domainConfigurationTypes.name = name; - } + changeName(name: Event): void { + // @ts-ignore + this.domainConfigurationTypes.name = name.target.value; } private updateActorSubject(): void { @@ -141,15 +141,17 @@ export class DomainConfigurationComponent implements OnInit { } selectActor(actor: string): void { - // @ts-ignore - this.domainConfigurationTypes?.actors.push(actor); - this.updateActorSubject(); + if (!this.domainConfigurationTypes?.actors.includes(actor)) { + this.domainConfigurationTypes?.actors.push(actor); + this.updateActorSubject(); + } } selectWorkObject(workObject: string): void { - // @ts-ignore - this.domainConfigurationTypes?.workObjects.push(workObject); - this.updateWorkObjectSubject(); + if (!this.domainConfigurationTypes?.workObjects.includes(workObject)) { + this.domainConfigurationTypes?.workObjects.push(workObject); + this.updateWorkObjectSubject(); + } } deselectActor(actor: string): void { @@ -187,7 +189,6 @@ export class DomainConfigurationComponent implements OnInit { saveDomain(): void { if (this.configurationHasChanged) { const domainConfiguration = this.createDomainConfiguration(); - console.log(domainConfiguration); this.modelerService.restart(domainConfiguration); } } diff --git a/src/app/domain-configuration/service/domain-configuration.service.ts b/src/app/domain-configuration/service/domain-configuration.service.ts index 0ea65f4a..dc5dd3ea 100644 --- a/src/app/domain-configuration/service/domain-configuration.service.ts +++ b/src/app/domain-configuration/service/domain-configuration.service.ts @@ -5,6 +5,10 @@ import { IconDictionaryService } from 'src/app/domain-configuration/service/icon import { Dictionary, Entry } from 'src/app/common/domain/dictionary/dictionary'; import { elementTypes } from 'src/app/common/domain/elementTypes'; import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { + initialDomainName, + TitleService, +} from '../../titleAndDescription/service/title.service'; @Injectable({ providedIn: 'root', @@ -12,17 +16,14 @@ import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; export class DomainConfigurationService { constructor( private iconDictionaryService: IconDictionaryService, - private elementRegistryService: ElementRegistryService + private elementRegistryService: ElementRegistryService, + private titleService: TitleService ) {} - private domainName: string | undefined = ''; - - public getDomainName(): string { - return this.domainName ? this.domainName : ''; - } - public setDomainName(domainName: string): void { - this.domainName = domainName; + this.titleService.setDomainName( + domainName ? domainName : initialDomainName + ); } public importConfiguration(config: DomainConfiguration): void { @@ -33,9 +34,6 @@ export class DomainConfigurationService { const domainConfiguration = e.target.result?.toString(); if (domainConfiguration) { this.loadConfiguration(JSON.parse(domainConfiguration)); - if (!this.domainName && config.name.endsWith('.domain')) { - this.domainName = config.name.replace('.domain', ''); - } } } }; @@ -50,7 +48,7 @@ export class DomainConfigurationService { } const configJSONString = JSON.stringify(domainConfiguration); - const filename = this.getDomainName() || 'domain'; + const filename = this.titleService.getDomainName(); const element = document.createElement('a'); element.setAttribute( @@ -104,8 +102,7 @@ export class DomainConfigurationService { actors, [], workObjects, - [], - this.getDomainName() + [] ); } return domainConfiguration; @@ -113,7 +110,7 @@ export class DomainConfigurationService { public getCurrentConfigurationNamesWithPrefix(): DomainConfiguration { return { - name: this.domainName || '', + name: this.titleService.getDomainName() || initialDomainName, actors: this.iconDictionaryService.getActorsDictionary().keysArray(), workObjects: this.iconDictionaryService .getWorkObjectsDictionary() @@ -123,7 +120,7 @@ export class DomainConfigurationService { public getCurrentConfigurationNamesWithoutPrefix(): DomainConfiguration { return { - name: this.domainName || '', + name: this.titleService.getDomainName() || initialDomainName, actors: this.iconDictionaryService .getActorsDictionary() .keysArray() @@ -140,7 +137,6 @@ export class DomainConfigurationService { actorOrder: string[] | undefined, workObjectsDict: Dictionary, workobjectOrder: string[] | undefined, - domainName?: string, config?: DomainConfiguration ): DomainConfiguration { const actors = actorsDict.keysArray(); @@ -187,7 +183,7 @@ export class DomainConfigurationService { } return { - name: domainName ? domainName : this.domainName ? this.domainName : '', + name: this.titleService.getDomainName(), actors: actorsJSON, workObjects: workObjectJSON, }; @@ -200,8 +196,7 @@ export class DomainConfigurationService { this.iconDictionaryService.getActorsDictionary(), [], this.iconDictionaryService.getWorkObjectsDictionary(), - [], - '' + [] ); const canvasObjectTypes: string[] = []; const currentActors = new Dictionary(); @@ -211,6 +206,8 @@ export class DomainConfigurationService { const newActors: { [key: string]: any } = {}; const newWorkobjects: { [key: string]: any } = {}; + this.titleService.setDomainName(initialDomainName); + currentActors.addEach(currentConfig.actors); currentWorkobjects.addEach(currentConfig.workObjects); @@ -248,7 +245,7 @@ export class DomainConfigurationService { }); return { - name: '', + name: initialDomainName, actors: newActors, workObjects: newWorkobjects, }; diff --git a/src/app/header/component/header.component.html b/src/app/header/component/header.component.html index fc3622ab..53cf5eb6 100644 --- a/src/app/header/component/header.component.html +++ b/src/app/header/component/header.component.html @@ -5,5 +5,5 @@
Domain: - default + {{currentDomainName | async}}
diff --git a/src/app/header/component/header.component.ts b/src/app/header/component/header.component.ts index ed9d7e95..1169d799 100644 --- a/src/app/header/component/header.component.ts +++ b/src/app/header/component/header.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { Observable } from 'rxjs'; +import { Observable, Subject } from 'rxjs'; import { ModelerService } from '../../modeler/service/modeler.service'; import { TitleService } from '../../titleAndDescription/service/title.service'; @@ -10,12 +10,14 @@ import { TitleService } from '../../titleAndDescription/service/title.service'; }) export class HeaderComponent implements OnInit { showDescription: Observable; + currentDomainName: Observable; constructor( private titleService: TitleService, private modelerService: ModelerService ) { this.showDescription = this.titleService.getShowDescriptionObservable(); + this.currentDomainName = this.titleService.getDomainNameAsObservable(); } ngOnInit(): void { diff --git a/src/app/modeler/service/modeler.service.ts b/src/app/modeler/service/modeler.service.ts index 09531706..7c908dd6 100644 --- a/src/app/modeler/service/modeler.service.ts +++ b/src/app/modeler/service/modeler.service.ts @@ -8,6 +8,7 @@ import { IconDictionaryService } from '../../domain-configuration/service/icon-d import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; import { BusinessObject } from '../../common/domain/businessObject'; import { config } from 'rxjs'; +import { TitleService } from '../../titleAndDescription/service/title.service'; @Injectable({ providedIn: 'root', @@ -39,7 +40,7 @@ export class ModelerService { if (domainConfiguration) { // TODO über event? - //this.iconDictionaryService.setCusomtConfiguration(domainConfiguration); + this.iconDictionaryService.setCusomtConfiguration(domainConfiguration); // TODO über event? this.domainConfigurationService.loadConfiguration(domainConfiguration); } diff --git a/src/app/settings-module/settings.module.ts b/src/app/settings-module/settings.module.ts index 75d654f4..6040db90 100644 --- a/src/app/settings-module/settings.module.ts +++ b/src/app/settings-module/settings.module.ts @@ -4,10 +4,12 @@ import { DomainConfigurationComponent } from 'src/app/domain-configuration/compo import { GeneralSettingsComponent } from 'src/app/general-settings/component/general-settings.component'; import { LabelDictionaryComponent } from 'src/app/label-dictionary/component/label-dictionary.component'; import { AutosaveSettingsComponent } from '../autosave/autosave-settings-component/autosave-settings.component'; -import {MatButtonModule} from "@angular/material/button"; -import {MatGridListModule} from "@angular/material/grid-list"; -import {IconListItemComponent} from "../domain-configuration/component/icon-list-item/icon-list-item.component"; -import {MatButtonToggleModule} from "@angular/material/button-toggle"; +import { MatButtonModule } from '@angular/material/button'; +import { MatGridListModule } from '@angular/material/grid-list'; +import { IconListItemComponent } from '../domain-configuration/component/icon-list-item/icon-list-item.component'; +import { MatButtonToggleModule } from '@angular/material/button-toggle'; +import { MatListModule } from '@angular/material/list'; +import { DetailsListItemComponent } from '../domain-configuration/component/details-list-item/details-list-item.component'; @NgModule({ declarations: [ @@ -16,6 +18,7 @@ import {MatButtonToggleModule} from "@angular/material/button-toggle"; LabelDictionaryComponent, AutosaveSettingsComponent, IconListItemComponent, + DetailsListItemComponent, ], exports: [ AutosaveSettingsComponent, @@ -28,6 +31,7 @@ import {MatButtonToggleModule} from "@angular/material/button-toggle"; MatButtonModule, MatGridListModule, MatButtonToggleModule, + MatListModule, ], }) export class SettingsModule {} diff --git a/src/app/titleAndDescription/service/title.service.ts b/src/app/titleAndDescription/service/title.service.ts index 56cb157c..cb4a2002 100644 --- a/src/app/titleAndDescription/service/title.service.ts +++ b/src/app/titleAndDescription/service/title.service.ts @@ -4,6 +4,7 @@ import { BehaviorSubject } from 'rxjs'; export const initialTitle = '< title >'; export const initialDescription = '< description >'; +export const initialDomainName = 'default'; const version = '2.0.0-alpha'; @Injectable({ @@ -12,9 +13,11 @@ const version = '2.0.0-alpha'; export class TitleService { private title = initialTitle; private description = initialDescription; + private domainName = initialDomainName; private titleSubject = new BehaviorSubject(this.title); private descriptionSubject = new BehaviorSubject(this.description); + private domainNameSubject = new BehaviorSubject(initialDomainName); private showDescription = new BehaviorSubject(true); private commandStack: any; @@ -63,6 +66,11 @@ export class TitleService { this.showDescription.next(show); } + public setDomainName(name: string): void { + console.log(name); + this.domainNameSubject.next(name); + } + public getShowDescriptionObservable(): Observable { return this.showDescription.asObservable(); } @@ -93,4 +101,12 @@ export class TitleService { }; this.commandStack.execute('story.updateHeadlineAndDescription', context); } + + getDomainNameAsObservable(): Observable { + return this.domainNameSubject.asObservable(); + } + + getDomainName(): string { + return this.domainNameSubject.value; + } } From 06f5701c25f2877a409e79635b4df5a6cc005340 Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 18:01:07 +0100 Subject: [PATCH 014/242] Domain Customization: refactors Code to allow reset to default / initial configuration (not yet implemented) --- src/app/common/domain/domainConfiguration.ts | 6 + .../details-list-item.component.html | 5 +- .../details-list-item.component.scss | 10 + .../details-list-item.component.ts | 26 +- .../domain-configuration.component.html | 34 +-- .../domain-configuration.component.scss | 18 -- .../domain-configuration.component.ts | 204 ++------------- .../domain-details.component.html | 30 +++ .../domain-details.component.scss | 20 ++ .../domain-details.component.spec.ts | 25 ++ .../domain-details.component.ts | 34 +++ .../icon-list-item.component.ts | 26 +- .../service/domain-configuration.service.ts | 7 +- .../domain-customization.service.spec.ts | 16 ++ .../service/domain-customization.service.ts | 240 ++++++++++++++++++ src/app/settings-module/settings.module.ts | 2 + .../service/title.service.ts | 1 - 17 files changed, 448 insertions(+), 256 deletions(-) create mode 100644 src/app/domain-configuration/component/domain-details/domain-details.component.html create mode 100644 src/app/domain-configuration/component/domain-details/domain-details.component.scss create mode 100644 src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts create mode 100644 src/app/domain-configuration/component/domain-details/domain-details.component.ts create mode 100644 src/app/domain-configuration/service/domain-customization.service.spec.ts create mode 100644 src/app/domain-configuration/service/domain-customization.service.ts diff --git a/src/app/common/domain/domainConfiguration.ts b/src/app/common/domain/domainConfiguration.ts index c2c204fc..153579e5 100644 --- a/src/app/common/domain/domainConfiguration.ts +++ b/src/app/common/domain/domainConfiguration.ts @@ -3,3 +3,9 @@ export interface DomainConfiguration { actors: { [key: string]: any }; workObjects: { [key: string]: any }; } + +export interface CustomDomainCofiguration { + name: string; + actors: string[]; + workObjects: string[]; +} diff --git a/src/app/domain-configuration/component/details-list-item/details-list-item.component.html b/src/app/domain-configuration/component/details-list-item/details-list-item.component.html index 9087088f..e5033778 100644 --- a/src/app/domain-configuration/component/details-list-item/details-list-item.component.html +++ b/src/app/domain-configuration/component/details-list-item/details-list-item.component.html @@ -1 +1,4 @@ -{{icon.name}} +
+ {{name}} + {{icon.name}} +
diff --git a/src/app/domain-configuration/component/details-list-item/details-list-item.component.scss b/src/app/domain-configuration/component/details-list-item/details-list-item.component.scss index e69de29b..56198cbc 100644 --- a/src/app/domain-configuration/component/details-list-item/details-list-item.component.scss +++ b/src/app/domain-configuration/component/details-list-item/details-list-item.component.scss @@ -0,0 +1,10 @@ +.icon { + width: 20px; + height: 20px; + padding-right: 3px; +} + +.detailsListItem { + display: flex; + justify-items: center; +} diff --git a/src/app/domain-configuration/component/details-list-item/details-list-item.component.ts b/src/app/domain-configuration/component/details-list-item/details-list-item.component.ts index a1d907ab..15c6f556 100644 --- a/src/app/domain-configuration/component/details-list-item/details-list-item.component.ts +++ b/src/app/domain-configuration/component/details-list-item/details-list-item.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { AfterViewInit, Component, Input, OnInit } from '@angular/core'; import { IconListItem } from '../../domain/iconListItem'; @Component({ @@ -6,10 +6,30 @@ import { IconListItem } from '../../domain/iconListItem'; templateUrl: './details-list-item.component.html', styleUrls: ['./details-list-item.component.scss'], }) -export class DetailsListItemComponent implements OnInit { +export class DetailsListItemComponent implements AfterViewInit { @Input() // @ts-ignore icon: IconListItem; - ngOnInit(): void {} + ngAfterViewInit() { + this.createIcon(); + } + + get id() { + return ( + 'domain-configuration-details-icon-' + + this.icon.name.toLowerCase() + + '-' + + (this.icon.isWorkObject ? 'workobject' : 'actor') + ); + } + + get name(): string { + return this.icon.name; + } + + private createIcon(): void { + const img = document.getElementById(this.id) as HTMLImageElement; + img.src = '' + this.icon.svg; + } } diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index fff345fd..92a28198 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -81,42 +81,12 @@ [rowspan]="1" > -
-
- Domain name -
- - -
-
- - - - - -
-
-
- - - - - -
-
+ diff --git a/src/app/domain-configuration/component/domain-configuration.component.scss b/src/app/domain-configuration/component/domain-configuration.component.scss index bfc2024c..86956e30 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.scss +++ b/src/app/domain-configuration/component/domain-configuration.component.scss @@ -9,16 +9,6 @@ color: #666666; } -#line { - padding: 2px; - position: relative; - right: 0; - left: 0; - width: 100%; - border-bottom: solid 2px #ccc; - margin-top: -5px; -} - .domainConfiguration { display: grid; grid-template-columns: 70% 30%; @@ -57,15 +47,7 @@ ::ng-deep.mat-grid-tile { .mat-grid-tile-content { - justify-content: inherit; } } -.details { - display: grid; - grid-template-rows: 10% 45% auto 45%; - height: calc(100vh - 120px); - grid-row-gap: 1px; -} - diff --git a/src/app/domain-configuration/component/domain-configuration.component.ts b/src/app/domain-configuration/component/domain-configuration.component.ts index 2ff7fa58..98f2e984 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.ts +++ b/src/app/domain-configuration/component/domain-configuration.component.ts @@ -1,16 +1,12 @@ -import { Component, EventEmitter, OnInit, Output } from '@angular/core'; -import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { Component, OnInit } from '@angular/core'; +import { CustomDomainCofiguration } from 'src/app/common/domain/domainConfiguration'; import { DomainConfigurationService } from 'src/app/domain-configuration/service/domain-configuration.service'; import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; import { BehaviorSubject } from 'rxjs'; import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; -import { elementTypes } from 'src/app/common/domain/elementTypes'; -import { getNameFromType } from 'src/app/common/util/naming'; import { sanitizeIconName } from 'src/app/common/util/sanitizer'; -import { ModelerService } from 'src/app/modeler/service/modeler.service'; -import { IconListItem } from '../domain/iconListItem'; import { IconFilterEnum } from '../domain/iconFilterEnum'; -import { TitleService } from '../../titleAndDescription/service/title.service'; +import { DomainCustomizationService } from '../service/domain-customization.service'; @Component({ selector: 'app-domain-configuration', @@ -18,10 +14,7 @@ import { TitleService } from '../../titleAndDescription/service/title.service'; styleUrls: ['./domain-configuration.component.scss'], }) export class DomainConfigurationComponent implements OnInit { - private domainConfigurationTypes: DomainConfiguration | undefined; - private readonly initialConfigurationNames: DomainConfiguration | undefined; - - private configurationHasChanged = false; + private domainConfigurationTypes: CustomDomainCofiguration; public filter = new BehaviorSubject( IconFilterEnum.ICON_FILTER_NONE @@ -29,30 +22,27 @@ export class DomainConfigurationComponent implements OnInit { selectedActors = new BehaviorSubject([]); selectedWorkobjects = new BehaviorSubject([]); - name = new BehaviorSubject(''); allIcons: Dictionary; allIconNames = new BehaviorSubject([]); allFilteredIconNames = new BehaviorSubject([]); constructor( - private modelerService: ModelerService, private configurationService: DomainConfigurationService, - private iconDictionaryService: IconDictionaryService + private iconDictionaryService: IconDictionaryService, + private domainCustomizationService: DomainCustomizationService ) { this.domainConfigurationTypes = - configurationService.getCurrentConfigurationNamesWithoutPrefix(); - this.initialConfigurationNames = - configurationService.getCurrentConfigurationNamesWithoutPrefix(); + this.domainCustomizationService.getDomainConfiguration().value; this.allIcons = this.iconDictionaryService.getFullDictionary(); this.allIconNames.next(this.allIcons.keysArray()); - this.name.next(this.domainConfigurationTypes?.name || ''); // @ts-ignore - this.selectedWorkobjects.next(this.domainConfigurationTypes?.workObjects); + this.selectedWorkobjects = + this.domainCustomizationService.getSelectedWorkobjects(); // @ts-ignore - this.selectedActors.next(this.domainConfigurationTypes?.actors); + this.selectedActors = this.domainCustomizationService.getSelectedActors(); } ngOnInit(): void { @@ -70,159 +60,39 @@ export class DomainConfigurationComponent implements OnInit { break; case IconFilterEnum.ICON_FILTER_ACTOR: allFiltered = this.allIconNames.value.filter((name) => - this.checkForActor(name) + this.domainCustomizationService.checkForActor(name) ); break; case IconFilterEnum.ICON_FILTER_WORKOBJECT: allFiltered = this.allIconNames.value.filter((name) => - this.checkForWorkObject(name) + this.domainCustomizationService.checkForWorkObject(name) ); break; case IconFilterEnum.ICON_FILTER_UNASSIGNED: allFiltered = this.allIconNames.value.filter( - (name) => !this.checkForActor(name) && !this.checkForWorkObject(name) + (name) => + !this.domainCustomizationService.checkForActor(name) && + !this.domainCustomizationService.checkForWorkObject(name) ); break; } return allFiltered; } - checkForActor(iconName: string): boolean { - return ( - this.domainConfigurationTypes?.actors.filter((actor: string) => - actor.includes(iconName) - ).length > 0 - ); - } - - checkForWorkObject(iconName: string): boolean { - return ( - this.domainConfigurationTypes?.workObjects.filter((workObject: string) => - workObject.includes(iconName) - ).length > 0 - ); - } - - // @ts-ignore - checkActor(event, actor: string): void { - if (event) { - this.selectActor(actor); - this.deselectWorkobject(actor); - } else { - this.deselectActor(actor); - } - } - - // @ts-ignore - checkWorkobject(event, workobject: string): void { - if (event) { - this.selectWorkObject(workobject); - this.deselectActor(workobject); - } else { - this.deselectWorkobject(workobject); - } - } - - changeName(name: Event): void { - // @ts-ignore - this.domainConfigurationTypes.name = name.target.value; - } - - private updateActorSubject(): void { - // @ts-ignore - this.selectedActors.next(this.domainConfigurationTypes?.actors); - this.configurationHasChanged = true; - } - - private updateWorkObjectSubject(): void { - // @ts-ignore - this.selectedWorkobjects.next(this.domainConfigurationTypes?.workObjects); - this.configurationHasChanged = true; - } - - selectActor(actor: string): void { - if (!this.domainConfigurationTypes?.actors.includes(actor)) { - this.domainConfigurationTypes?.actors.push(actor); - this.updateActorSubject(); - } - } - - selectWorkObject(workObject: string): void { - if (!this.domainConfigurationTypes?.workObjects.includes(workObject)) { - this.domainConfigurationTypes?.workObjects.push(workObject); - this.updateWorkObjectSubject(); - } - } - - deselectActor(actor: string): void { - if (this.domainConfigurationTypes) { - this.domainConfigurationTypes = { - name: this.domainConfigurationTypes.name, - actors: this.domainConfigurationTypes.actors.filter( - (a: string) => !a.includes(actor) - ), - workObjects: this.domainConfigurationTypes.workObjects, - }; - } - this.updateActorSubject(); - } - - deselectWorkobject(workobject: string): void { - if (this.domainConfigurationTypes) { - this.domainConfigurationTypes = { - name: this.domainConfigurationTypes.name, - actors: this.domainConfigurationTypes.actors, - workObjects: this.domainConfigurationTypes.workObjects.filter( - (w: string) => !w.includes(workobject) - ), - }; - } - this.updateWorkObjectSubject(); - } - resetDomain(): void { - this.modelerService.restart( - this.configurationService.createDefaultConfig() - ); + this.domainCustomizationService.resetDomain(); } saveDomain(): void { - if (this.configurationHasChanged) { - const domainConfiguration = this.createDomainConfiguration(); - this.modelerService.restart(domainConfiguration); - } - } - - private createDomainConfiguration(): DomainConfiguration { - const actors: { [key: string]: any } = {}; - const workObjects: { [key: string]: any } = {}; - - this.domainConfigurationTypes?.actors.forEach((type: string) => { - actors[type] = this.iconDictionaryService.getIconSource( - getNameFromType(type) - ); - }); - this.domainConfigurationTypes?.workObjects.forEach((type: string) => { - workObjects[type] = this.iconDictionaryService.getIconSource( - getNameFromType(type) - ); - }); - - return { - name: this.domainConfigurationTypes?.name || '', - actors, - workObjects, - }; + this.domainCustomizationService.saveDomain(); } exportDomain(): void { - this.saveDomain(); - this.configurationService.exportConfiguration(); + this.domainCustomizationService.exportDomain(); } cancel(): void { - this.domainConfigurationTypes = this.initialConfigurationNames; - this.resetToInitialConfiguration(); + this.domainCustomizationService.cancel(); } startIconUpload(): void { @@ -266,45 +136,11 @@ export class DomainConfigurationComponent implements OnInit { this.allIcons = this.iconDictionaryService.getFullDictionary(); this.allIconNames.next(this.allIcons.keysArray()); + // TODO add Icon to List }; - reader.readAsDataURL(iconInputFile); } - getSrcForIcon(name: string): string { - let iconName = ''; - if (name.includes(elementTypes.DOMAINSTORY)) { - iconName = getNameFromType(name); - } else { - iconName = name; - } - const rawSrc = this.iconDictionaryService.getIconSource(iconName); - - if (!rawSrc) { - return ''; - } - - if (rawSrc.startsWith('data')) { - return rawSrc; - } else { - return 'data:image/svg+xml,' + rawSrc; - } - } - - private resetToInitialConfiguration(): void { - this.updateActorSubject(); - this.updateWorkObjectSubject(); - } - - getIconForName(iconName: string): IconListItem { - return { - name: iconName, - svg: this.getSrcForIcon(iconName), - isActor: this.checkForActor(iconName), - isWorkObject: this.checkForWorkObject(iconName), - }; - } - filterForActors(): void { if (this.filter.value !== IconFilterEnum.ICON_FILTER_ACTOR) { this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR); diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.html b/src/app/domain-configuration/component/domain-details/domain-details.component.html new file mode 100644 index 00000000..c79b35d2 --- /dev/null +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.html @@ -0,0 +1,30 @@ +
+
+

Domain name

+ + +
+
+

Actors

+ + + + + +
+
+
+

Workobjects

+ + + + + +
+
diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.scss b/src/app/domain-configuration/component/domain-details/domain-details.component.scss new file mode 100644 index 00000000..c2547ddd --- /dev/null +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.scss @@ -0,0 +1,20 @@ +.details { + display: grid; + grid-template-rows: 70px auto 3px auto; + height: calc(100vh - 120px); + grid-row-gap: 1px; +} + +#line { + padding: 2px; + position: relative; + right: 0; + left: 0; + width: 100%; + border-bottom: solid 2px #ccc; + margin-top: -5px; +} + +h3 { + padding-left: 5px; +} diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts b/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts new file mode 100644 index 00000000..5bdf5c8e --- /dev/null +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DomainDetailsComponent } from './domain-details.component'; + +describe('DomainDetailsComponent', () => { + let component: DomainDetailsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DomainDetailsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DomainDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.ts b/src/app/domain-configuration/component/domain-details/domain-details.component.ts new file mode 100644 index 00000000..34952110 --- /dev/null +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; +import { DomainCustomizationService } from '../../service/domain-customization.service'; +import { IconListItem } from '../../domain/iconListItem'; + +@Component({ + selector: 'app-domain-details', + templateUrl: './domain-details.component.html', + styleUrls: ['./domain-details.component.scss'], +}) +export class DomainDetailsComponent implements OnInit { + domainName: BehaviorSubject; + + public selectedActors: BehaviorSubject; + public selectedWorkobjects: BehaviorSubject; + + constructor(private customizationService: DomainCustomizationService) { + this.domainName = customizationService.getDomainName(); + this.selectedActors = this.customizationService.getSelectedActors(); + this.selectedWorkobjects = + this.customizationService.getSelectedWorkobjects(); + } + + ngOnInit(): void {} + + changeName(event: Event): void { + // @ts-ignore + this.customizationService.changeName(event.target.value); + } + + getIconForName(iconName: string): IconListItem { + return this.customizationService.getIconForName(iconName); + } +} diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts index d4eda507..d7efe9e1 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.ts @@ -8,6 +8,7 @@ import { } from '@angular/core'; import { IconListItem } from '../../domain/iconListItem'; import { BehaviorSubject } from 'rxjs'; +import { DomainCustomizationService } from '../../service/domain-customization.service'; @Component({ selector: 'app-icon-list-item', @@ -16,28 +17,23 @@ import { BehaviorSubject } from 'rxjs'; }) export class IconListItemComponent implements OnInit, AfterViewInit { @Input() - public icon: IconListItem | undefined; + public iconName: string = ''; - @Output() - checkActorEmitter = new EventEmitter(); - @Output() - checkWorkObjectEmitter = new EventEmitter(); + // @ts-ignore + public icon: IconListItem = {}; public isActor: BehaviorSubject; public isWorkobject: BehaviorSubject; public isNone: BehaviorSubject; - constructor() { - this.isActor = new BehaviorSubject(this.icon ? this.icon.isActor : false); - this.isWorkobject = new BehaviorSubject( - this.icon ? this.icon.isWorkObject : false - ); - this.isNone = new BehaviorSubject( - !(this.icon?.isActor || this.icon?.isWorkObject) - ); + constructor(private domainCustomizationService: DomainCustomizationService) { + this.isActor = new BehaviorSubject(false); + this.isWorkobject = new BehaviorSubject(false); + this.isNone = new BehaviorSubject(true); } ngOnInit(): void { + this.icon = this.domainCustomizationService.getIconForName(this.iconName); this.isActor.next(this.icon ? this.icon.isActor : false); this.isWorkobject.next(this.icon ? this.icon.isWorkObject : false); this.isNone.next(!(this.icon?.isActor || this.icon?.isWorkObject)); @@ -46,13 +42,13 @@ export class IconListItemComponent implements OnInit, AfterViewInit { if (this.icon) { this.icon.isActor = value; } - this.checkActorEmitter.emit(value); + this.domainCustomizationService.checkActor(value, this.icon.name); }); this.isWorkobject.subscribe((value) => { if (this.icon) { this.icon.isWorkObject = value; } - this.checkWorkObjectEmitter.emit(value); + this.domainCustomizationService.checkWorkobject(value, this.icon.name); }); } diff --git a/src/app/domain-configuration/service/domain-configuration.service.ts b/src/app/domain-configuration/service/domain-configuration.service.ts index dc5dd3ea..04b38784 100644 --- a/src/app/domain-configuration/service/domain-configuration.service.ts +++ b/src/app/domain-configuration/service/domain-configuration.service.ts @@ -4,7 +4,10 @@ import { allIcons } from 'src/app/domain-configuration/domain/allIcons'; import { IconDictionaryService } from 'src/app/domain-configuration/service/icon-dictionary.service'; import { Dictionary, Entry } from 'src/app/common/domain/dictionary/dictionary'; import { elementTypes } from 'src/app/common/domain/elementTypes'; -import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { + CustomDomainCofiguration, + DomainConfiguration, +} from 'src/app/common/domain/domainConfiguration'; import { initialDomainName, TitleService, @@ -118,7 +121,7 @@ export class DomainConfigurationService { }; } - public getCurrentConfigurationNamesWithoutPrefix(): DomainConfiguration { + public getCurrentConfigurationNamesWithoutPrefix(): CustomDomainCofiguration { return { name: this.titleService.getDomainName() || initialDomainName, actors: this.iconDictionaryService diff --git a/src/app/domain-configuration/service/domain-customization.service.spec.ts b/src/app/domain-configuration/service/domain-customization.service.spec.ts new file mode 100644 index 00000000..a813e9bc --- /dev/null +++ b/src/app/domain-configuration/service/domain-customization.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DomainCustomizationService } from './domain-customization.service'; + +describe('DomainCustomizationService', () => { + let service: DomainCustomizationService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DomainCustomizationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/domain-configuration/service/domain-customization.service.ts b/src/app/domain-configuration/service/domain-customization.service.ts new file mode 100644 index 00000000..e5dda31b --- /dev/null +++ b/src/app/domain-configuration/service/domain-customization.service.ts @@ -0,0 +1,240 @@ +import { Injectable } from '@angular/core'; +import { + CustomDomainCofiguration, + DomainConfiguration, +} from '../../common/domain/domainConfiguration'; +import { BehaviorSubject } from 'rxjs'; +import { deepCopy } from '../../common/util/deepCopy'; +import { DomainConfigurationService } from './domain-configuration.service'; +import { IconDictionaryService } from './icon-dictionary.service'; +import { getNameFromType } from '../../common/util/naming'; +import { ModelerService } from '../../modeler/service/modeler.service'; +import { elementTypes } from '../../common/domain/elementTypes'; +import { IconListItem } from '../domain/iconListItem'; + +@Injectable({ + providedIn: 'root', +}) +export class DomainCustomizationService { + private readonly domainConfigurationTypes: BehaviorSubject; + private readonly initialConfigurationNames: CustomDomainCofiguration; + + domainName = new BehaviorSubject(''); + + private configurationHasChanged = false; + + selectedActors = new BehaviorSubject([]); + selectedWorkobjects = new BehaviorSubject([]); + + constructor( + private modelerService: ModelerService, + private configurationService: DomainConfigurationService, + private iconDictionaryService: IconDictionaryService + ) { + this.domainConfigurationTypes = new BehaviorSubject( + this.configurationService.getCurrentConfigurationNamesWithoutPrefix() + ); + + this.initialConfigurationNames = deepCopy( + this.domainConfigurationTypes.value + ); + + this.selectedWorkobjects.next( + this.domainConfigurationTypes.value.workObjects + ); + this.selectedActors.next(this.domainConfigurationTypes.value.actors); + } + + getDomainConfiguration() { + return this.domainConfigurationTypes; + } + + checkActor(isActor: boolean, actor: string): void { + if (isActor) { + this.selectActor(actor); + this.deselectWorkobject(actor); + } else { + this.deselectActor(actor); + } + } + + checkWorkobject(isWorkobject: boolean, workobject: string): void { + if (isWorkobject) { + this.selectWorkObject(workobject); + this.deselectActor(workobject); + } else { + this.deselectWorkobject(workobject); + } + } + + private updateActorSubject(): void { + this.selectedActors.next(this.domainConfigurationTypes.value.actors); + this.configurationHasChanged = true; + } + + private updateWorkObjectSubject(): void { + this.selectedWorkobjects.next( + this.domainConfigurationTypes.value.workObjects + ); + this.configurationHasChanged = true; + } + + selectActor(actor: string): void { + const value = this.domainConfigurationTypes.value; + if (!value.actors.includes(actor)) { + value.actors.push(actor); + this.domainConfigurationTypes.next(value); + this.updateActorSubject(); + } + } + + selectWorkObject(workObject: string): void { + const value = this.domainConfigurationTypes.value; + if (!value.workObjects.includes(workObject)) { + value.workObjects.push(workObject); + this.domainConfigurationTypes.next(value); + this.updateWorkObjectSubject(); + } + } + + deselectActor(actor: string): void { + if (this.domainConfigurationTypes) { + this.domainConfigurationTypes.next({ + name: this.domainConfigurationTypes.value.name, + actors: this.domainConfigurationTypes.value.actors.filter( + (a: string) => !a.includes(actor) + ), + workObjects: this.domainConfigurationTypes.value.workObjects, + }); + } + this.updateActorSubject(); + } + + deselectWorkobject(workobject: string): void { + if (this.domainConfigurationTypes) { + this.domainConfigurationTypes.next({ + name: this.domainConfigurationTypes.value.name, + actors: this.domainConfigurationTypes.value.actors, + workObjects: this.domainConfigurationTypes.value.workObjects.filter( + (w: string) => !w.includes(workobject) + ), + }); + } + this.updateWorkObjectSubject(); + } + + resetDomain(): void { + this.modelerService.restart( + this.configurationService.createDefaultConfig() + ); + } + + saveDomain(): void { + if (this.configurationHasChanged) { + const domainConfiguration = this.createDomainConfiguration(); + this.modelerService.restart(domainConfiguration); + } + } + + private createDomainConfiguration(): DomainConfiguration { + const actors: { [key: string]: any } = {}; + const workObjects: { [key: string]: any } = {}; + + this.domainConfigurationTypes.value.actors.forEach((type: string) => { + actors[type] = this.iconDictionaryService.getIconSource( + getNameFromType(type) + ); + }); + this.domainConfigurationTypes.value.workObjects.forEach((type: string) => { + workObjects[type] = this.iconDictionaryService.getIconSource( + getNameFromType(type) + ); + }); + + return { + name: this.domainConfigurationTypes.value.name || '', + actors, + workObjects, + }; + } + + public exportDomain(): void { + this.saveDomain(); + this.configurationService.exportConfiguration(); + } + + cancel(): void { + this.domainConfigurationTypes.next(this.initialConfigurationNames); + this.resetToInitialConfiguration(); + } + + private resetToInitialConfiguration(): void { + this.updateActorSubject(); + this.updateWorkObjectSubject(); + } + + private getSrcForIcon(name: string): string { + let iconName = ''; + if (name.includes(elementTypes.DOMAINSTORY)) { + iconName = getNameFromType(name); + } else { + iconName = name; + } + const rawSrc = this.iconDictionaryService.getIconSource(iconName); + + if (!rawSrc) { + return ''; + } + + if (rawSrc.startsWith('data')) { + return rawSrc; + } else { + return 'data:image/svg+xml,' + rawSrc; + } + } + + getIconForName(iconName: string): IconListItem { + return { + name: iconName, + svg: this.getSrcForIcon(iconName), + isActor: this.checkForActor(iconName), + isWorkObject: this.checkForWorkObject(iconName), + }; + } + + checkForActor(iconName: string): boolean { + return ( + this.domainConfigurationTypes.value.actors.filter((actor: string) => + actor.includes(iconName) + ).length > 0 + ); + } + + checkForWorkObject(iconName: string): boolean { + return ( + this.domainConfigurationTypes.value.workObjects.filter( + (workObject: string) => workObject.includes(iconName) + ).length > 0 + ); + } + + getDomainName(): BehaviorSubject { + return this.domainName; + } + + changeName(domainName: string): void { + this.domainName.next(domainName); + } + + getSelectedActors(): BehaviorSubject { + return this.selectedActors; + } + + getSelectedWorkobjects(): BehaviorSubject { + return this.selectedWorkobjects; + } + + getInitialConfig() { + return this.initialConfigurationNames; + } +} diff --git a/src/app/settings-module/settings.module.ts b/src/app/settings-module/settings.module.ts index 6040db90..b58585ed 100644 --- a/src/app/settings-module/settings.module.ts +++ b/src/app/settings-module/settings.module.ts @@ -10,6 +10,7 @@ import { IconListItemComponent } from '../domain-configuration/component/icon-li import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { MatListModule } from '@angular/material/list'; import { DetailsListItemComponent } from '../domain-configuration/component/details-list-item/details-list-item.component'; +import { DomainDetailsComponent } from '../domain-configuration/component/domain-details/domain-details.component'; @NgModule({ declarations: [ @@ -19,6 +20,7 @@ import { DetailsListItemComponent } from '../domain-configuration/component/deta AutosaveSettingsComponent, IconListItemComponent, DetailsListItemComponent, + DomainDetailsComponent, ], exports: [ AutosaveSettingsComponent, diff --git a/src/app/titleAndDescription/service/title.service.ts b/src/app/titleAndDescription/service/title.service.ts index cb4a2002..4eaaa271 100644 --- a/src/app/titleAndDescription/service/title.service.ts +++ b/src/app/titleAndDescription/service/title.service.ts @@ -67,7 +67,6 @@ export class TitleService { } public setDomainName(name: string): void { - console.log(name); this.domainNameSubject.next(name); } From 120efb2c02cd9c29c80556f88667ae2b1106d97a Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Tue, 23 Nov 2021 19:46:09 +0100 Subject: [PATCH 015/242] Domain Customization: reset to default/initial configuration --- src/app/common/domain/iconConfiguration.ts | 4 +- .../domain-configuration.component.html | 2 +- .../domain-configuration.component.scss | 2 +- .../domain-details.component.ts | 2 +- .../icon-list-item.component.ts | 41 ++++----- .../service/domain-configuration.service.ts | 29 +++++-- .../service/domain-customization.service.ts | 86 +++++++++++++++---- .../service/icon-dictionary.service.ts | 16 ++-- src/app/modeler/service/modeler.service.ts | 2 - 9 files changed, 122 insertions(+), 62 deletions(-) diff --git a/src/app/common/domain/iconConfiguration.ts b/src/app/common/domain/iconConfiguration.ts index f927f90f..a88ecc3f 100644 --- a/src/app/common/domain/iconConfiguration.ts +++ b/src/app/common/domain/iconConfiguration.ts @@ -1,7 +1,7 @@ import { Dictionary } from 'src/app/common/domain/dictionary/dictionary'; import { overrideAppendedIcons } from 'src/app/domain-configuration/domain/allIcons'; import { Configuration } from 'src/app/common/domain/configuration'; -import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { CustomDomainCofiguration } from 'src/app/common/domain/domainConfiguration'; export class IconConfiguration { public domainName = 'default'; @@ -52,7 +52,7 @@ export class IconConfiguration { public createCustomConf( includeNecessary: boolean, - domainConfiguration: DomainConfiguration + domainConfiguration: CustomDomainCofiguration ): Configuration { this.domainName = domainConfiguration.name; diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index 92a28198..fd83670d 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -74,7 +74,7 @@
- + ({}); public isActor: BehaviorSubject; public isWorkobject: BehaviorSubject; @@ -34,22 +34,16 @@ export class IconListItemComponent implements OnInit, AfterViewInit { ngOnInit(): void { this.icon = this.domainCustomizationService.getIconForName(this.iconName); - this.isActor.next(this.icon ? this.icon.isActor : false); - this.isWorkobject.next(this.icon ? this.icon.isWorkObject : false); - this.isNone.next(!(this.icon?.isActor || this.icon?.isWorkObject)); - - this.isActor.subscribe((value) => { - if (this.icon) { - this.icon.isActor = value; - } - this.domainCustomizationService.checkActor(value, this.icon.name); - }); - this.isWorkobject.subscribe((value) => { - if (this.icon) { - this.icon.isWorkObject = value; - } - this.domainCustomizationService.checkWorkobject(value, this.icon.name); + this.icon.subscribe((value) => { + this.isActor.next(value.isActor); + this.isWorkobject.next(value.isWorkObject); + this.isNone.next(!(value.isActor || value.isWorkObject)); }); + this.isActor.next(this.icon.value.isActor); + this.isWorkobject.next(this.icon.value.isWorkObject); + this.isNone.next( + !(this.icon.value.isActor || this.icon.value.isWorkObject) + ); } ngAfterViewInit() { @@ -57,30 +51,27 @@ export class IconListItemComponent implements OnInit, AfterViewInit { } get name(): string { - return this.icon ? this.icon.name : ''; + return this.iconName; } get id() { - return 'domain-configuration-icon-' + this.icon?.name; + return 'domain-configuration-icon-' + this.iconName; } toggleNone() { - this.isWorkobject.next(false); - this.isActor.next(false); + this.domainCustomizationService.checkNone(this.iconName); } toggleActor(): void { - this.isActor.next(true); - this.isWorkobject.next(false); + this.domainCustomizationService.checkActor(true, this.iconName); } toggleWorkobject(): void { - this.isWorkobject.next(true); - this.isActor.next(false); + this.domainCustomizationService.checkWorkobject(true, this.iconName); } private createIcon(): void { const img = document.getElementById(this.id) as HTMLImageElement; - img.src = '' + this.icon?.svg; + img.src = '' + this.icon.value?.svg; } } diff --git a/src/app/domain-configuration/service/domain-configuration.service.ts b/src/app/domain-configuration/service/domain-configuration.service.ts index 04b38784..539a4e34 100644 --- a/src/app/domain-configuration/service/domain-configuration.service.ts +++ b/src/app/domain-configuration/service/domain-configuration.service.ts @@ -12,6 +12,7 @@ import { initialDomainName, TitleService, } from '../../titleAndDescription/service/title.service'; +import { defaultConf } from '../../common/domain/iconConfiguration'; @Injectable({ providedIn: 'root', @@ -201,16 +202,19 @@ export class DomainConfigurationService { this.iconDictionaryService.getWorkObjectsDictionary(), [] ); + + const defaultActors = new Dictionary(); + const defaultWorkobjects = new Dictionary(); + const canvasObjectTypes: string[] = []; const currentActors = new Dictionary(); const currentWorkobjects = new Dictionary(); const allActors = new Dictionary(); const allWorkobjects = new Dictionary(); - const newActors: { [key: string]: any } = {}; - const newWorkobjects: { [key: string]: any } = {}; - - this.titleService.setDomainName(initialDomainName); + const newActors = new Dictionary(); + const newWorkobjects = new Dictionary(); + // Setup currentActors.addEach(currentConfig.actors); currentWorkobjects.addEach(currentConfig.workObjects); @@ -235,18 +239,31 @@ export class DomainConfigurationService { } }); + defaultConf.actors.forEach((a) => { + defaultActors.add(allActors.get(a), a); + }); + defaultConf.workObjects.forEach((a) => { + defaultWorkobjects.add(allActors.get(a), a); + }); + + // Excecution + this.titleService.setDomainName(initialDomainName); + allActors.keysArray().forEach((key) => { if (canvasObjectTypes.includes(key)) { - newActors[key] = allActors.get(key); + newActors.add(allActors.get(key), key); } }); allWorkobjects.keysArray().forEach((key) => { if (canvasObjectTypes.includes(key)) { - newWorkobjects[key] = allWorkobjects.get(key); + newWorkobjects.add(allWorkobjects.get(key), key); } }); + newActors.appendDict(defaultActors); + newWorkobjects.appendDict(defaultWorkobjects); + return { name: initialDomainName, actors: newActors, diff --git a/src/app/domain-configuration/service/domain-customization.service.ts b/src/app/domain-configuration/service/domain-customization.service.ts index e5dda31b..212230f7 100644 --- a/src/app/domain-configuration/service/domain-customization.service.ts +++ b/src/app/domain-configuration/service/domain-customization.service.ts @@ -4,20 +4,21 @@ import { DomainConfiguration, } from '../../common/domain/domainConfiguration'; import { BehaviorSubject } from 'rxjs'; -import { deepCopy } from '../../common/util/deepCopy'; import { DomainConfigurationService } from './domain-configuration.service'; import { IconDictionaryService } from './icon-dictionary.service'; import { getNameFromType } from '../../common/util/naming'; import { ModelerService } from '../../modeler/service/modeler.service'; import { elementTypes } from '../../common/domain/elementTypes'; import { IconListItem } from '../domain/iconListItem'; +import { Dictionary, Entry } from '../../common/domain/dictionary/dictionary'; @Injectable({ providedIn: 'root', }) export class DomainCustomizationService { private readonly domainConfigurationTypes: BehaviorSubject; - private readonly initialConfigurationNames: CustomDomainCofiguration; + + private allIconListItems = new Dictionary(); domainName = new BehaviorSubject(''); @@ -35,35 +36,54 @@ export class DomainCustomizationService { this.configurationService.getCurrentConfigurationNamesWithoutPrefix() ); - this.initialConfigurationNames = deepCopy( - this.domainConfigurationTypes.value - ); - this.selectedWorkobjects.next( this.domainConfigurationTypes.value.workObjects ); this.selectedActors.next(this.domainConfigurationTypes.value.actors); + + iconDictionaryService + .getAllIconDictionary() + .keysArray() + .forEach((iconName) => { + this.allIconListItems.add( + new BehaviorSubject({ + name: iconName, + svg: this.getSrcForIcon(iconName), + isActor: this.checkForActor(iconName), + isWorkObject: this.checkForWorkObject(iconName), + }), + iconName + ); + }); } getDomainConfiguration() { return this.domainConfigurationTypes; } + checkNone(iconName: string) { + this.updateIcon(false, false, iconName); + } + checkActor(isActor: boolean, actor: string): void { if (isActor) { + this.updateIcon(true, false, actor); this.selectActor(actor); this.deselectWorkobject(actor); } else { this.deselectActor(actor); + this.updateIcon(false, false, actor); } } checkWorkobject(isWorkobject: boolean, workobject: string): void { if (isWorkobject) { + this.updateIcon(false, true, workobject); this.selectWorkObject(workobject); this.deselectActor(workobject); } else { this.deselectWorkobject(workobject); + this.updateIcon(false, false, workobject); } } @@ -124,9 +144,17 @@ export class DomainCustomizationService { } resetDomain(): void { - this.modelerService.restart( - this.configurationService.createDefaultConfig() - ); + const defaultConfig = this.configurationService.createDefaultConfig(); + + this.domainConfigurationTypes.next({ + name: defaultConfig.name, + actors: defaultConfig.actors.entries.map((entry: Entry) => entry.key), + workObjects: defaultConfig.workObjects.entries.map( + (entry: Entry) => entry.key + ), + } as CustomDomainCofiguration); + this.updateAllIconBehaviourSubjects(); + this.modelerService.restart(defaultConfig); } saveDomain(): void { @@ -164,10 +192,26 @@ export class DomainCustomizationService { } cancel(): void { - this.domainConfigurationTypes.next(this.initialConfigurationNames); + this.domainConfigurationTypes.next( + this.configurationService.getCurrentConfigurationNamesWithoutPrefix() + ); + this.updateAllIconBehaviourSubjects(); this.resetToInitialConfiguration(); } + private updateAllIconBehaviourSubjects() { + const customDomainCofiguration = this.domainConfigurationTypes.value; + this.allIconListItems.keysArray().forEach((iconName) => { + if (customDomainCofiguration.actors.includes(iconName)) { + this.updateIcon(true, false, iconName); + } else if (customDomainCofiguration.workObjects.includes(iconName)) { + this.updateIcon(false, true, iconName); + } else { + this.updateIcon(false, false, iconName); + } + }); + } + private resetToInitialConfiguration(): void { this.updateActorSubject(); this.updateWorkObjectSubject(); @@ -193,13 +237,8 @@ export class DomainCustomizationService { } } - getIconForName(iconName: string): IconListItem { - return { - name: iconName, - svg: this.getSrcForIcon(iconName), - isActor: this.checkForActor(iconName), - isWorkObject: this.checkForWorkObject(iconName), - }; + getIconForName(iconName: string): BehaviorSubject { + return this.allIconListItems.get(iconName); } checkForActor(iconName: string): boolean { @@ -234,7 +273,16 @@ export class DomainCustomizationService { return this.selectedWorkobjects; } - getInitialConfig() { - return this.initialConfigurationNames; + private updateIcon( + isActor: boolean, + isWorkobject: boolean, + iconName: string + ) { + const iconBehaviourSubject = this.getIconForName(iconName); + const icon = iconBehaviourSubject.value; + icon.isActor = isActor; + icon.isWorkObject = isWorkobject; + + iconBehaviourSubject.next(icon); } } diff --git a/src/app/domain-configuration/service/icon-dictionary.service.ts b/src/app/domain-configuration/service/icon-dictionary.service.ts index 74f0343a..4a219a06 100644 --- a/src/app/domain-configuration/service/icon-dictionary.service.ts +++ b/src/app/domain-configuration/service/icon-dictionary.service.ts @@ -12,7 +12,10 @@ import { } from 'src/app/common/domain/iconConfiguration'; import { Configuration } from 'src/app/common/domain/configuration'; import { BusinessObject } from 'src/app/common/domain/businessObject'; -import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; +import { + CustomDomainCofiguration, + DomainConfiguration, +} from 'src/app/common/domain/domainConfiguration'; @Injectable({ providedIn: 'root', @@ -26,7 +29,10 @@ export class IconDictionaryService { private allIconDictionary = new Dictionary(); private iconDictionary = new Dictionary(); - private customConfiguration: DomainConfiguration | undefined; + private customConfiguration: + | CustomDomainCofiguration + | DomainConfiguration + | undefined; private readonly iconConfig: IconConfiguration; @@ -36,13 +42,13 @@ export class IconDictionaryService { } public setCusomtConfiguration( - customConfiguration: DomainConfiguration + customConfiguration: CustomDomainCofiguration | DomainConfiguration ): void { this.customConfiguration = customConfiguration; } public getIconConfig( - domainConfiguration?: DomainConfiguration + domainConfiguration?: CustomDomainCofiguration ): Configuration { if (domainConfiguration) { return this.iconConfig.createCustomConf(true, domainConfiguration); @@ -50,7 +56,7 @@ export class IconDictionaryService { if (this.customConfiguration) { return this.iconConfig.createCustomConf( false, - this.customConfiguration as DomainConfiguration + this.customConfiguration as CustomDomainCofiguration ); } return this.iconConfig.getDefaultConf(); diff --git a/src/app/modeler/service/modeler.service.ts b/src/app/modeler/service/modeler.service.ts index 7c908dd6..1517a1c0 100644 --- a/src/app/modeler/service/modeler.service.ts +++ b/src/app/modeler/service/modeler.service.ts @@ -7,8 +7,6 @@ import { ElementRegistryService } from '../../elementRegistry-service/element-re import { IconDictionaryService } from '../../domain-configuration/service/icon-dictionary.service'; import { DomainConfigurationService } from '../../domain-configuration/service/domain-configuration.service'; import { BusinessObject } from '../../common/domain/businessObject'; -import { config } from 'rxjs'; -import { TitleService } from '../../titleAndDescription/service/title.service'; @Injectable({ providedIn: 'root', From d62e0c49b53aca17b559c225147383105668e708 Mon Sep 17 00:00:00 2001 From: "alexander.zellober" Date: Wed, 24 Nov 2021 10:14:01 +0100 Subject: [PATCH 016/242] Domain-Customizaion: Import of Domain now functioning --- .../domain-configuration.component.html | 2 +- .../domain-configuration.component.scss | 1 - .../domain-configuration.component.ts | 16 +++-- .../domain-details.component.html | 2 +- .../domain-details.component.scss | 7 +++ .../service/domain-configuration.service.ts | 26 +++----- .../service/domain-customization.service.ts | 60 +++++++++++++++---- src/styles.scss | 10 ++++ 8 files changed, 89 insertions(+), 35 deletions(-) diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index fd83670d..23f7e29f 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -73,7 +73,7 @@
-
+
{ - // @ts-ignore - this.configurationService.importConfiguration(e.target.result); + const config = JSON.parse( + // @ts-ignore + e.target.result.toString() + ) as DomainConfiguration; + this.configurationService.loadConfiguration(config, false); + + this.domainCustomizationService.importConfiguration(config); }; - reader.readAsDataURL(domainInputFile); + reader.readAsText(domainInputFile); } importIcon(): void { diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.html b/src/app/domain-configuration/component/domain-details/domain-details.component.html index c79b35d2..21af90d9 100644 --- a/src/app/domain-configuration/component/domain-details/domain-details.component.html +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.html @@ -1,4 +1,4 @@ -
+

Domain name

- Actor List - - - -
- + Workobject List + + + + +
Activity List - - -
- + + + + +
diff --git a/src/app/label-dictionary/component/label-dictionary.component.ts b/src/app/label-dictionary/component/label-dictionary.component.ts index d27b352a..87b4abd4 100644 --- a/src/app/label-dictionary/component/label-dictionary.component.ts +++ b/src/app/label-dictionary/component/label-dictionary.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; import { LabelDictionaryService } from '../service/label-dictionary.service'; import { WorkObjectLabelEntry } from '../domain/workObjectLabelEntry'; import { LabelEntry } from '../domain/labelEntry'; @@ -9,7 +9,7 @@ import { BehaviorSubject } from 'rxjs'; templateUrl: './label-dictionary.component.html', styleUrls: ['./label-dictionary.component.scss'], }) -export class LabelDictionaryComponent implements OnInit { +export class LabelDictionaryComponent implements AfterViewInit { workobjectEntriesSubject: BehaviorSubject; activityEntriesSubject: BehaviorSubject; @@ -25,7 +25,15 @@ export class LabelDictionaryComponent implements OnInit { this.activityEntriesSubject = new BehaviorSubject(this.activityEntries); } - ngOnInit(): void {} + ngAfterViewInit(): void { + this.labelDictionaryService.createLabelDictionaries(); + this.workobjectEntriesSubject.next( + this.labelDictionaryService.getWorkObjectLabels() + ); + this.activityEntriesSubject.next( + this.labelDictionaryService.getActivityLabels() + ); + } save(): void { this.workObjectEntries = this.workobjectEntriesSubject.value; diff --git a/src/app/label-dictionary/service/label-dictionary.service.ts b/src/app/label-dictionary/service/label-dictionary.service.ts index f295e224..b319d131 100644 --- a/src/app/label-dictionary/service/label-dictionary.service.ts +++ b/src/app/label-dictionary/service/label-dictionary.service.ts @@ -29,7 +29,7 @@ export class LabelDictionaryService { const allObjects = this.elementRegistryService.getAllCanvasObjects(); allObjects.forEach((element) => { - const name = element.businessObject.name; + const name = element.name; if ( name && name.length > 0 && diff --git a/src/app/modeler/component/modeler.component.ts b/src/app/modeler/component/modeler.component.ts index 40ab1aff..132086eb 100644 --- a/src/app/modeler/component/modeler.component.ts +++ b/src/app/modeler/component/modeler.component.ts @@ -1,4 +1,5 @@ import { Component, OnInit } from '@angular/core'; +import { ModelerService } from '../service/modeler.service'; @Component({ selector: 'app-modeler', @@ -6,7 +7,9 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./modeler.component.scss'], }) export class ModelerComponent implements OnInit { - constructor() {} + constructor(private modelerService: ModelerService) {} - ngOnInit(): void {} + ngOnInit(): void { + this.modelerService.postInit(); + } } diff --git a/src/app/modeler/domain-story-modeler/index.js b/src/app/modeler/domain-story-modeler/index.js index 8f76bb32..7c447915 100644 --- a/src/app/modeler/domain-story-modeler/index.js +++ b/src/app/modeler/domain-story-modeler/index.js @@ -1,5 +1,3 @@ -"use strict"; - import Modeler from "bpmn-js/lib/Modeler"; import ResizeModule from "diagram-js/lib/features/resize"; import { assign, isArray } from "min-dash"; @@ -55,6 +53,7 @@ DomainStoryModeler.prototype._addCustomShape = function (customElement) { } return canvas.addShape(customShape); }; + DomainStoryModeler.prototype._addCustomConnection = function (customElement) { this._customElements.push(customElement); @@ -76,6 +75,7 @@ DomainStoryModeler.prototype._addCustomConnection = function (customElement) { return canvas.addConnection(connection); }; +//** We import BusinessObjects, not the whole Canvas Object!!!!!!!! DomainStoryModeler.prototype.importCustomElements = function (elements) { this.get("eventBus").fire("diagram.clear", {}); this._customElements = []; diff --git a/src/app/modeler/service/modeler.service.ts b/src/app/modeler/service/modeler.service.ts index 1517a1c0..e22765b4 100644 --- a/src/app/modeler/service/modeler.service.ts +++ b/src/app/modeler/service/modeler.service.ts @@ -29,17 +29,17 @@ export class ModelerService { private encoded: string | undefined; public restart( - domainConfiguration?: DomainConfiguration | undefined, + domainConfiguration?: DomainConfiguration, domainStory?: BusinessObject[] ): void { const currentStory = - domainStory || - this.elementRegistryService.createObjectListForDSTDownload(); - + domainStory != undefined + ? domainStory + : this.elementRegistryService + .createObjectListForDSTDownload() + .map((e) => e.businessObject); if (domainConfiguration) { - // TODO über event? this.iconDictionaryService.setCusomtConfiguration(domainConfiguration); - // TODO über event? this.domainConfigurationService.loadConfiguration(domainConfiguration); } diff --git a/src/app/renderer-service/renderer.service.ts b/src/app/renderer-service/renderer.service.ts index 6ea6f9b7..49ec4169 100644 --- a/src/app/renderer-service/renderer.service.ts +++ b/src/app/renderer-service/renderer.service.ts @@ -43,6 +43,8 @@ export class RendererService { } public getStory(): BusinessObject[] { - return this.elementRegistryService.createObjectListForDSTDownload(); + return this.elementRegistryService + .createObjectListForDSTDownload() + .map((c) => c.businessObject); } } diff --git a/src/app/settings-module/component/settings.component.ts b/src/app/settings-module/component/settings.component.ts index 4aab23fc..a70aac70 100644 --- a/src/app/settings-module/component/settings.component.ts +++ b/src/app/settings-module/component/settings.component.ts @@ -4,6 +4,7 @@ import { ModelerService } from 'src/app/modeler/service/modeler.service'; import { DomainConfiguration } from 'src/app/common/domain/domainConfiguration'; import { Observable } from 'rxjs'; import { AutosaveStateService } from '../../autosave/service/autosave-state.service'; +import { DomainCustomizationService } from '../../domain-configuration/service/domain-customization.service'; @Component({ selector: 'app-settings', @@ -23,7 +24,8 @@ export class SettingsComponent implements OnInit { constructor( private settingsService: SettingsService, private modelerService: ModelerService, - private autosaveStateService: AutosaveStateService + private autosaveStateService: AutosaveStateService, + private domainCustomizationService: DomainCustomizationService ) { this.autosaveEnable = autosaveStateService.getAutosaveStateAsObservable(); } @@ -31,8 +33,10 @@ export class SettingsComponent implements OnInit { ngOnInit(): void {} close(): void { - if (this.configurationChanged) { - this.modelerService.restart(this.domainConfiguration); + const savedConfiguration = + this.domainCustomizationService.getSavedConfiguration(); + if (savedConfiguration) { + this.modelerService.restart(savedConfiguration); } this.settingsService.close(); } diff --git a/src/app/settings-module/service/settings.service.ts b/src/app/settings-module/service/settings.service.ts index 556a3ee6..df85a0a9 100644 --- a/src/app/settings-module/service/settings.service.ts +++ b/src/app/settings-module/service/settings.service.ts @@ -7,8 +7,6 @@ import { BehaviorSubject, Observable } from 'rxjs'; export class SettingsService { private showSettings = new BehaviorSubject(false); - constructor() {} - public getShowSettings(): Observable { return this.showSettings.asObservable(); } From 021b46f20411b3ca60b9a751ad41d8034a26b349 Mon Sep 17 00:00:00 2001 From: Alexander Zellober Date: Thu, 25 Nov 2021 11:25:25 +0100 Subject: [PATCH 020/242] Label Dictionary: Mass Renaming works now --- .../details-list-item.component.html | 4 +- .../details-list-item.component.spec.ts | 5 +- .../domain-configuration.component.html | 58 +++++++++++++------ .../domain-configuration.component.scss | 3 +- .../domain-details.component.html | 35 +++++++---- .../domain-details.component.spec.ts | 5 +- .../icon-list-item.component.html | 28 ++++++--- .../icon-list-item.component.scss | 4 +- .../icon-list-item.component.spec.ts | 5 +- .../domain/iconFilterEnum.ts | 8 +-- .../domain/iconListItem.ts | 10 ++-- .../header/component/header.component.html | 2 +- .../component/label-dictionary.component.html | 22 +++++-- .../component/label-dictionary.component.ts | 18 ++++++ .../service/label-dictionary.service.ts | 14 +---- .../component/settings.component.html | 4 +- .../component/settings.component.scss | 2 +- 17 files changed, 144 insertions(+), 83 deletions(-) diff --git a/src/app/domain-configuration/component/details-list-item/details-list-item.component.html b/src/app/domain-configuration/component/details-list-item/details-list-item.component.html index e5033778..81bc8cc0 100644 --- a/src/app/domain-configuration/component/details-list-item/details-list-item.component.html +++ b/src/app/domain-configuration/component/details-list-item/details-list-item.component.html @@ -1,4 +1,4 @@
- {{name}} - {{icon.name}} + {{ name }} + {{ icon.name }}
diff --git a/src/app/domain-configuration/component/details-list-item/details-list-item.component.spec.ts b/src/app/domain-configuration/component/details-list-item/details-list-item.component.spec.ts index 748b080b..7bf1ceb6 100644 --- a/src/app/domain-configuration/component/details-list-item/details-list-item.component.spec.ts +++ b/src/app/domain-configuration/component/details-list-item/details-list-item.component.spec.ts @@ -8,9 +8,8 @@ describe('DetailsListItemComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ DetailsListItemComponent ] - }) - .compileComponents(); + declarations: [DetailsListItemComponent], + }).compileComponents(); }); beforeEach(() => { diff --git a/src/app/domain-configuration/component/domain-configuration.component.html b/src/app/domain-configuration/component/domain-configuration.component.html index 23f7e29f..e0e18c61 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.html +++ b/src/app/domain-configuration/component/domain-configuration.component.html @@ -13,30 +13,28 @@ />
- -
- - + - - -
@@ -82,11 +102,11 @@ >
- +
diff --git a/src/app/domain-configuration/component/domain-configuration.component.scss b/src/app/domain-configuration/component/domain-configuration.component.scss index e2ebd6e6..cbbfe536 100644 --- a/src/app/domain-configuration/component/domain-configuration.component.scss +++ b/src/app/domain-configuration/component/domain-configuration.component.scss @@ -25,7 +25,7 @@ } .searchbar { - display: grid; + display: grid; grid-template-columns: 300px 10px 150px 170px 170px auto; } @@ -49,4 +49,3 @@ justify-content: inherit; } } - diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.html b/src/app/domain-configuration/component/domain-details/domain-details.component.html index 21af90d9..f292cdd8 100644 --- a/src/app/domain-configuration/component/domain-details/domain-details.component.html +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.html @@ -1,29 +1,40 @@

Domain name

-

Actors

- - + +
-
+

Workobjects

- - - + + +
diff --git a/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts b/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts index 5bdf5c8e..d78d3cd1 100644 --- a/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts +++ b/src/app/domain-configuration/component/domain-details/domain-details.component.spec.ts @@ -8,9 +8,8 @@ describe('DomainDetailsComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ DomainDetailsComponent ] - }) - .compileComponents(); + declarations: [DomainDetailsComponent], + }).compileComponents(); }); beforeEach(() => { diff --git a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html index 37ea59bb..75992554 100644 --- a/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html +++ b/src/app/domain-configuration/component/icon-list-item/icon-list-item.component.html @@ -1,17 +1,31 @@
- {{name}} -
{{name}}
+ {{ name }} +
{{ name }}