From 11ffd0e5c8980e2faf61d74b06265501760076cc Mon Sep 17 00:00:00 2001 From: Patrick Klaeren Date: Tue, 26 Mar 2024 18:29:26 +0000 Subject: [PATCH 1/3] Initial removal of Node/Vue --- Modix.Data/Models/Core/ModixConfig.cs | 7 - Modix.sln | 2 - Modix/ClientApp/.babelrc | 5 - Modix/ClientApp/.env | 1 - Modix/ClientApp/.gitignore | 20 - Modix/ClientApp/.postcssrc | 5 - Modix/ClientApp/dev-server-running.js | 12 - Modix/ClientApp/package-lock.json | 10921 ---------------- Modix/ClientApp/package.json | 45 - Modix/ClientApp/public/favicon.ico | Bin 1150 -> 0 bytes Modix/ClientApp/public/index.html | 22 - Modix/ClientApp/src/App.vue | 58 - Modix/ClientApp/src/app/Deserializer.ts | 14 - Modix/ClientApp/src/app/ModixRoute.ts | 120 - Modix/ClientApp/src/app/Store.ts | 157 - Modix/ClientApp/src/app/ThemeConfiguration.ts | 8 - Modix/ClientApp/src/app/Util.ts | 92 - .../src/app/discord-markdown/LICENSE | 21 - .../src/app/discord-markdown/index.js | 278 - .../src/assets/Default/logo_small.png | Bin 4240 -> 0 bytes .../assets/Default/logo_small_selected.png | Bin 5479 -> 0 bytes .../src/assets/Holiday/logo_small.png | Bin 6890 -> 0 bytes .../assets/Holiday/logo_small_selected.png | Bin 6608 -> 0 bytes .../src/assets/Spoopy/logo_small.png | Bin 21757 -> 0 bytes .../src/assets/Spoopy/logo_small_selected.png | Bin 21700 -> 0 bytes Modix/ClientApp/src/assets/icon.png | Bin 8734 -> 0 bytes Modix/ClientApp/src/assets/loading-bg.svg | 1 - Modix/ClientApp/src/assets/logo.png | Bin 36183 -> 0 bytes .../src/assets/logo_colored_spoopy.psd | Bin 48263 -> 0 bytes Modix/ClientApp/src/assets/logo_holiday.psd | Bin 100337 -> 0 bytes .../ClientApp/src/assets/logo_holiday_bw.psd | Bin 106525 -> 0 bytes .../ClientApp/src/components/Autocomplete.vue | 178 - .../src/components/Commands/CommandMenu.vue | 49 - .../src/components/Commands/CommandView.vue | 42 - .../src/components/Commands/ModuleView.vue | 49 - .../src/components/Commands/ParameterView.vue | 76 - .../Configuration/IndividualDesignation.vue | 70 - .../src/components/ConfirmationModal.vue | 64 - Modix/ClientApp/src/components/ErrorView.vue | 59 - Modix/ClientApp/src/components/HeroHeader.vue | 28 - .../src/components/LoadingSpinner.vue | 42 - .../components/Logs/BatchDeleteContext.vue | 78 - .../src/components/Logs/DeletedMessages.vue | 300 - .../src/components/Logs/InfractionTable.vue | 354 - .../src/components/Logs/Infractions.vue | 384 - Modix/ClientApp/src/components/Logs/Tabs.vue | 84 - .../ClientApp/src/components/MiniProfile.vue | 131 - .../src/components/ModixComponent.vue | 20 - Modix/ClientApp/src/components/NavBar.vue | 115 - Modix/ClientApp/src/components/PieChart.vue | 87 - .../Promotions/PromotionCommentEditModal.vue | 124 - .../Promotions/PromotionCommentView.vue | 40 - .../Promotions/PromotionListItem.vue | 267 - .../src/components/Tags/TagCreationModal.vue | 211 - .../ClientApp/src/components/TinyUserView.vue | 46 - .../src/components/TriStateCheckbox.vue | 139 - .../src/components/UserLookup/UserProfile.vue | 114 - .../UserLookup/UserProfileField.vue | 55 - .../src/components/UserLookup/UserSearch.vue | 63 - Modix/ClientApp/src/data/loadingMessages.json | 19 - Modix/ClientApp/src/main.ts | 21 - Modix/ClientApp/src/models/Channel.ts | 5 - Modix/ClientApp/src/models/Claim.ts | 6 - Modix/ClientApp/src/models/ClaimMapping.ts | 38 - Modix/ClientApp/src/models/EphemeralUser.ts | 23 - Modix/ClientApp/src/models/FilterParameter.ts | 5 - Modix/ClientApp/src/models/Guild.ts | 6 - .../ClientApp/src/models/GuildStatApiData.ts | 21 - Modix/ClientApp/src/models/ModixState.ts | 29 - Modix/ClientApp/src/models/ModuleHelpData.ts | 24 - .../ClientApp/src/models/PersistentConfig.ts | 55 - Modix/ClientApp/src/models/PieChart.ts | 6 - Modix/ClientApp/src/models/RecordsPage.ts | 6 - Modix/ClientApp/src/models/Role.ts | 26 - Modix/ClientApp/src/models/RootState.ts | 6 - Modix/ClientApp/src/models/SortDirection.ts | 5 - Modix/ClientApp/src/models/SortParameter.ts | 7 - Modix/ClientApp/src/models/TableParameters.ts | 10 - Modix/ClientApp/src/models/Tags/TagAction.ts | 7 - .../src/models/Tags/TagCreationData.ts | 4 - .../src/models/Tags/TagMutationData.ts | 4 - Modix/ClientApp/src/models/Tags/TagSummary.ts | 15 - Modix/ClientApp/src/models/User.ts | 8 - .../src/models/UserMessagePerChannelCount.ts | 5 - .../configuration/RoleClaimModifyData.ts | 8 - .../src/models/core/GuildUserIdentity.ts | 13 - .../src/models/core/ModerationAction.ts | 8 - .../infractions/InfractionCreationData.ts | 12 - .../models/infractions/InfractionSummary.ts | 20 - .../src/models/infractions/InfractionType.ts | 24 - .../src/models/logs/DeletedMessage.ts | 10 - .../models/logs/DeletedMessageAbstraction.ts | 8 - .../DesignatedChannelCreationData.ts | 5 - .../moderation/DesignatedChannelMapping.ts | 7 - .../moderation/DesignatedRoleCreationData.ts | 5 - .../moderation/DesignatedRoleMapping.ts | 7 - .../src/models/promotions/PromotionAction.ts | 8 - .../models/promotions/PromotionCampaign.ts | 84 - .../src/models/promotions/PromotionComment.ts | 12 - .../models/promotions/PromotionCommentData.ts | 7 - .../promotions/PromotionCreationData.ts | 5 - Modix/ClientApp/src/router.ts | 222 - Modix/ClientApp/src/services/ApiClient.ts | 10 - .../src/services/ConfigurationService.ts | 67 - .../ClientApp/src/services/GeneralService.ts | 125 - Modix/ClientApp/src/services/LogService.ts | 30 - .../src/services/PersistentKeyValueService.ts | 31 - .../src/services/PromotionService.ts | 76 - Modix/ClientApp/src/services/TagService.ts | 28 - Modix/ClientApp/src/services/UserService.ts | 19 - Modix/ClientApp/src/shims.d.ts | 10 - .../src/styles/components/autocomplete.scss | 36 - .../styles/components/batchDeleteContext.scss | 58 - .../src/styles/components/commandView.scss | 31 - .../src/styles/components/configuration.scss | 20 - .../src/styles/components/designations.scss | 63 - .../src/styles/components/infractions.scss | 57 - .../src/styles/components/loadingSpinner.scss | 170 - .../src/styles/components/miniProfile.scss | 100 - .../src/styles/components/navbar.scss | 84 - .../components/promotionCommentView.scss | 87 - .../styles/components/promotionListItem.scss | 244 - .../styles/components/tagCreationModal.scss | 50 - .../src/styles/components/userProfile.scss | 53 - .../src/styles/mixins/modal-dark-bg.scss | 10 - Modix/ClientApp/src/styles/required.scss | 31 - .../ClientApp/src/styles/themes/default.scss | 6 - .../ClientApp/src/styles/themes/holiday.scss | 22 - Modix/ClientApp/src/styles/themes/spoopy.scss | 101 - Modix/ClientApp/src/styles/tooltip.scss | 113 - Modix/ClientApp/src/styles/variables.scss | 151 - Modix/ClientApp/src/tslint.json | 3 - Modix/ClientApp/src/views/Commands.vue | 81 - .../Configuration/ChannelDesignations.vue | 237 - .../src/views/Configuration/Claims.vue | 231 - .../src/views/Configuration/Configuration.vue | 93 - .../views/Configuration/RoleDesignations.vue | 245 - Modix/ClientApp/src/views/CreatePromotion.vue | 189 - Modix/ClientApp/src/views/Home.vue | 47 - Modix/ClientApp/src/views/Logs.vue | 23 - Modix/ClientApp/src/views/Promotions.vue | 398 - Modix/ClientApp/src/views/Stats.vue | 152 - Modix/ClientApp/src/views/Tags/Tags.vue | 293 - Modix/ClientApp/src/views/UserLookup.vue | 55 - Modix/ClientApp/tsconfig.json | 40 - Modix/ClientApp/vue.config.js | 78 - Modix/Controllers/ApiController.cs | 63 - Modix/Controllers/AuthController.cs | 53 - Modix/Controllers/AutocompleteController.cs | 103 - Modix/Controllers/ChannelController.cs | 71 - Modix/Controllers/ClaimsController.cs | 52 - Modix/Controllers/CommandsController.cs | 40 - Modix/Controllers/GuildStatsController.cs | 34 - Modix/Controllers/InfractionController.cs | 180 - Modix/Controllers/LogController.cs | 124 - Modix/Controllers/ModixController.cs | 91 - Modix/Controllers/PromotionController.cs | 161 - Modix/Controllers/RoleController.cs | 71 - Modix/Controllers/TagController.cs | 100 - .../Controllers/UserInformationController.cs | 107 - Modix/Extensions/FilterParameterExtensions.cs | 13 - Modix/LogFilesAuthorizationMiddleware.cs | 1 - ...ametersToInfractionSearchCriteriaMapper.cs | 22 - ...oInfractionSummarySortingCriteriaMapper.cs | 26 - .../Mappings/StringToInfractionTypesMapper.cs | 14 - Modix/Mappings/StringToLongMapper.cs | 10 - .../StringToStringIfNotUlongMapper.cs | 10 - Modix/Mappings/StringToUlongMapper.cs | 10 - .../TableParametersToPagingCriteriaMapper.cs | 15 - Modix/Models/DeletedMessageAbstraction.cs | 58 - Modix/Models/DesignatedChannelApiData.cs | 12 - Modix/Models/DesignatedChannelCreationData.cs | 11 - Modix/Models/DesignatedRoleApiData.cs | 12 - Modix/Models/DesignatedRoleCreationData.cs | 11 - Modix/Models/FilterParameter.cs | 9 - Modix/Models/GuildStatApiData.cs | 15 - Modix/Models/InfractionCreationData.cs | 19 - Modix/Models/InfractionData.cs | 32 - Modix/Models/ModixUser.cs | 5 +- Modix/Models/PromotionCommentData.cs | 10 - Modix/Models/PromotionCreationData.cs | 8 - Modix/Models/RoleClaimModifyData.cs | 11 - Modix/Models/SortParameter.cs | 11 - Modix/Models/TableParameters.cs | 13 - Modix/Models/Tags/TagCreationData.cs | 7 - Modix/Models/Tags/TagData.cs | 27 - Modix/Models/Tags/TagMutationData.cs | 7 - Modix/Modix.csproj | 115 +- Modix/Program.cs | 73 +- 189 files changed, 6 insertions(+), 21763 deletions(-) delete mode 100644 Modix/ClientApp/.babelrc delete mode 100644 Modix/ClientApp/.env delete mode 100644 Modix/ClientApp/.gitignore delete mode 100644 Modix/ClientApp/.postcssrc delete mode 100644 Modix/ClientApp/dev-server-running.js delete mode 100644 Modix/ClientApp/package-lock.json delete mode 100644 Modix/ClientApp/package.json delete mode 100644 Modix/ClientApp/public/favicon.ico delete mode 100644 Modix/ClientApp/public/index.html delete mode 100644 Modix/ClientApp/src/App.vue delete mode 100644 Modix/ClientApp/src/app/Deserializer.ts delete mode 100644 Modix/ClientApp/src/app/ModixRoute.ts delete mode 100644 Modix/ClientApp/src/app/Store.ts delete mode 100644 Modix/ClientApp/src/app/ThemeConfiguration.ts delete mode 100644 Modix/ClientApp/src/app/Util.ts delete mode 100644 Modix/ClientApp/src/app/discord-markdown/LICENSE delete mode 100644 Modix/ClientApp/src/app/discord-markdown/index.js delete mode 100644 Modix/ClientApp/src/assets/Default/logo_small.png delete mode 100644 Modix/ClientApp/src/assets/Default/logo_small_selected.png delete mode 100644 Modix/ClientApp/src/assets/Holiday/logo_small.png delete mode 100644 Modix/ClientApp/src/assets/Holiday/logo_small_selected.png delete mode 100644 Modix/ClientApp/src/assets/Spoopy/logo_small.png delete mode 100644 Modix/ClientApp/src/assets/Spoopy/logo_small_selected.png delete mode 100644 Modix/ClientApp/src/assets/icon.png delete mode 100644 Modix/ClientApp/src/assets/loading-bg.svg delete mode 100644 Modix/ClientApp/src/assets/logo.png delete mode 100644 Modix/ClientApp/src/assets/logo_colored_spoopy.psd delete mode 100644 Modix/ClientApp/src/assets/logo_holiday.psd delete mode 100644 Modix/ClientApp/src/assets/logo_holiday_bw.psd delete mode 100644 Modix/ClientApp/src/components/Autocomplete.vue delete mode 100644 Modix/ClientApp/src/components/Commands/CommandMenu.vue delete mode 100644 Modix/ClientApp/src/components/Commands/CommandView.vue delete mode 100644 Modix/ClientApp/src/components/Commands/ModuleView.vue delete mode 100644 Modix/ClientApp/src/components/Commands/ParameterView.vue delete mode 100644 Modix/ClientApp/src/components/Configuration/IndividualDesignation.vue delete mode 100644 Modix/ClientApp/src/components/ConfirmationModal.vue delete mode 100644 Modix/ClientApp/src/components/ErrorView.vue delete mode 100644 Modix/ClientApp/src/components/HeroHeader.vue delete mode 100644 Modix/ClientApp/src/components/LoadingSpinner.vue delete mode 100644 Modix/ClientApp/src/components/Logs/BatchDeleteContext.vue delete mode 100644 Modix/ClientApp/src/components/Logs/DeletedMessages.vue delete mode 100644 Modix/ClientApp/src/components/Logs/InfractionTable.vue delete mode 100644 Modix/ClientApp/src/components/Logs/Infractions.vue delete mode 100644 Modix/ClientApp/src/components/Logs/Tabs.vue delete mode 100644 Modix/ClientApp/src/components/MiniProfile.vue delete mode 100644 Modix/ClientApp/src/components/ModixComponent.vue delete mode 100644 Modix/ClientApp/src/components/NavBar.vue delete mode 100644 Modix/ClientApp/src/components/PieChart.vue delete mode 100644 Modix/ClientApp/src/components/Promotions/PromotionCommentEditModal.vue delete mode 100644 Modix/ClientApp/src/components/Promotions/PromotionCommentView.vue delete mode 100644 Modix/ClientApp/src/components/Promotions/PromotionListItem.vue delete mode 100644 Modix/ClientApp/src/components/Tags/TagCreationModal.vue delete mode 100644 Modix/ClientApp/src/components/TinyUserView.vue delete mode 100644 Modix/ClientApp/src/components/TriStateCheckbox.vue delete mode 100644 Modix/ClientApp/src/components/UserLookup/UserProfile.vue delete mode 100644 Modix/ClientApp/src/components/UserLookup/UserProfileField.vue delete mode 100644 Modix/ClientApp/src/components/UserLookup/UserSearch.vue delete mode 100644 Modix/ClientApp/src/data/loadingMessages.json delete mode 100644 Modix/ClientApp/src/main.ts delete mode 100644 Modix/ClientApp/src/models/Channel.ts delete mode 100644 Modix/ClientApp/src/models/Claim.ts delete mode 100644 Modix/ClientApp/src/models/ClaimMapping.ts delete mode 100644 Modix/ClientApp/src/models/EphemeralUser.ts delete mode 100644 Modix/ClientApp/src/models/FilterParameter.ts delete mode 100644 Modix/ClientApp/src/models/Guild.ts delete mode 100644 Modix/ClientApp/src/models/GuildStatApiData.ts delete mode 100644 Modix/ClientApp/src/models/ModixState.ts delete mode 100644 Modix/ClientApp/src/models/ModuleHelpData.ts delete mode 100644 Modix/ClientApp/src/models/PersistentConfig.ts delete mode 100644 Modix/ClientApp/src/models/PieChart.ts delete mode 100644 Modix/ClientApp/src/models/RecordsPage.ts delete mode 100644 Modix/ClientApp/src/models/Role.ts delete mode 100644 Modix/ClientApp/src/models/RootState.ts delete mode 100644 Modix/ClientApp/src/models/SortDirection.ts delete mode 100644 Modix/ClientApp/src/models/SortParameter.ts delete mode 100644 Modix/ClientApp/src/models/TableParameters.ts delete mode 100644 Modix/ClientApp/src/models/Tags/TagAction.ts delete mode 100644 Modix/ClientApp/src/models/Tags/TagCreationData.ts delete mode 100644 Modix/ClientApp/src/models/Tags/TagMutationData.ts delete mode 100644 Modix/ClientApp/src/models/Tags/TagSummary.ts delete mode 100644 Modix/ClientApp/src/models/User.ts delete mode 100644 Modix/ClientApp/src/models/UserMessagePerChannelCount.ts delete mode 100644 Modix/ClientApp/src/models/configuration/RoleClaimModifyData.ts delete mode 100644 Modix/ClientApp/src/models/core/GuildUserIdentity.ts delete mode 100644 Modix/ClientApp/src/models/core/ModerationAction.ts delete mode 100644 Modix/ClientApp/src/models/infractions/InfractionCreationData.ts delete mode 100644 Modix/ClientApp/src/models/infractions/InfractionSummary.ts delete mode 100644 Modix/ClientApp/src/models/infractions/InfractionType.ts delete mode 100644 Modix/ClientApp/src/models/logs/DeletedMessage.ts delete mode 100644 Modix/ClientApp/src/models/logs/DeletedMessageAbstraction.ts delete mode 100644 Modix/ClientApp/src/models/moderation/DesignatedChannelCreationData.ts delete mode 100644 Modix/ClientApp/src/models/moderation/DesignatedChannelMapping.ts delete mode 100644 Modix/ClientApp/src/models/moderation/DesignatedRoleCreationData.ts delete mode 100644 Modix/ClientApp/src/models/moderation/DesignatedRoleMapping.ts delete mode 100644 Modix/ClientApp/src/models/promotions/PromotionAction.ts delete mode 100644 Modix/ClientApp/src/models/promotions/PromotionCampaign.ts delete mode 100644 Modix/ClientApp/src/models/promotions/PromotionComment.ts delete mode 100644 Modix/ClientApp/src/models/promotions/PromotionCommentData.ts delete mode 100644 Modix/ClientApp/src/models/promotions/PromotionCreationData.ts delete mode 100644 Modix/ClientApp/src/router.ts delete mode 100644 Modix/ClientApp/src/services/ApiClient.ts delete mode 100644 Modix/ClientApp/src/services/ConfigurationService.ts delete mode 100644 Modix/ClientApp/src/services/GeneralService.ts delete mode 100644 Modix/ClientApp/src/services/LogService.ts delete mode 100644 Modix/ClientApp/src/services/PersistentKeyValueService.ts delete mode 100644 Modix/ClientApp/src/services/PromotionService.ts delete mode 100644 Modix/ClientApp/src/services/TagService.ts delete mode 100644 Modix/ClientApp/src/services/UserService.ts delete mode 100644 Modix/ClientApp/src/shims.d.ts delete mode 100644 Modix/ClientApp/src/styles/components/autocomplete.scss delete mode 100644 Modix/ClientApp/src/styles/components/batchDeleteContext.scss delete mode 100644 Modix/ClientApp/src/styles/components/commandView.scss delete mode 100644 Modix/ClientApp/src/styles/components/configuration.scss delete mode 100644 Modix/ClientApp/src/styles/components/designations.scss delete mode 100644 Modix/ClientApp/src/styles/components/infractions.scss delete mode 100644 Modix/ClientApp/src/styles/components/loadingSpinner.scss delete mode 100644 Modix/ClientApp/src/styles/components/miniProfile.scss delete mode 100644 Modix/ClientApp/src/styles/components/navbar.scss delete mode 100644 Modix/ClientApp/src/styles/components/promotionCommentView.scss delete mode 100644 Modix/ClientApp/src/styles/components/promotionListItem.scss delete mode 100644 Modix/ClientApp/src/styles/components/tagCreationModal.scss delete mode 100644 Modix/ClientApp/src/styles/components/userProfile.scss delete mode 100644 Modix/ClientApp/src/styles/mixins/modal-dark-bg.scss delete mode 100644 Modix/ClientApp/src/styles/required.scss delete mode 100644 Modix/ClientApp/src/styles/themes/default.scss delete mode 100644 Modix/ClientApp/src/styles/themes/holiday.scss delete mode 100644 Modix/ClientApp/src/styles/themes/spoopy.scss delete mode 100644 Modix/ClientApp/src/styles/tooltip.scss delete mode 100644 Modix/ClientApp/src/styles/variables.scss delete mode 100644 Modix/ClientApp/src/tslint.json delete mode 100644 Modix/ClientApp/src/views/Commands.vue delete mode 100644 Modix/ClientApp/src/views/Configuration/ChannelDesignations.vue delete mode 100644 Modix/ClientApp/src/views/Configuration/Claims.vue delete mode 100644 Modix/ClientApp/src/views/Configuration/Configuration.vue delete mode 100644 Modix/ClientApp/src/views/Configuration/RoleDesignations.vue delete mode 100644 Modix/ClientApp/src/views/CreatePromotion.vue delete mode 100644 Modix/ClientApp/src/views/Home.vue delete mode 100644 Modix/ClientApp/src/views/Logs.vue delete mode 100644 Modix/ClientApp/src/views/Promotions.vue delete mode 100644 Modix/ClientApp/src/views/Stats.vue delete mode 100644 Modix/ClientApp/src/views/Tags/Tags.vue delete mode 100644 Modix/ClientApp/src/views/UserLookup.vue delete mode 100644 Modix/ClientApp/tsconfig.json delete mode 100644 Modix/ClientApp/vue.config.js delete mode 100644 Modix/Controllers/ApiController.cs delete mode 100644 Modix/Controllers/AuthController.cs delete mode 100644 Modix/Controllers/AutocompleteController.cs delete mode 100644 Modix/Controllers/ChannelController.cs delete mode 100644 Modix/Controllers/ClaimsController.cs delete mode 100644 Modix/Controllers/CommandsController.cs delete mode 100644 Modix/Controllers/GuildStatsController.cs delete mode 100644 Modix/Controllers/InfractionController.cs delete mode 100644 Modix/Controllers/LogController.cs delete mode 100644 Modix/Controllers/ModixController.cs delete mode 100644 Modix/Controllers/PromotionController.cs delete mode 100644 Modix/Controllers/RoleController.cs delete mode 100644 Modix/Controllers/TagController.cs delete mode 100644 Modix/Controllers/UserInformationController.cs delete mode 100644 Modix/Extensions/FilterParameterExtensions.cs delete mode 100644 Modix/Mappings/FilterParametersToInfractionSearchCriteriaMapper.cs delete mode 100644 Modix/Mappings/SortParameterToInfractionSummarySortingCriteriaMapper.cs delete mode 100644 Modix/Mappings/StringToInfractionTypesMapper.cs delete mode 100644 Modix/Mappings/StringToLongMapper.cs delete mode 100644 Modix/Mappings/StringToStringIfNotUlongMapper.cs delete mode 100644 Modix/Mappings/StringToUlongMapper.cs delete mode 100644 Modix/Mappings/TableParametersToPagingCriteriaMapper.cs delete mode 100644 Modix/Models/DeletedMessageAbstraction.cs delete mode 100644 Modix/Models/DesignatedChannelApiData.cs delete mode 100644 Modix/Models/DesignatedChannelCreationData.cs delete mode 100644 Modix/Models/DesignatedRoleApiData.cs delete mode 100644 Modix/Models/DesignatedRoleCreationData.cs delete mode 100644 Modix/Models/FilterParameter.cs delete mode 100644 Modix/Models/GuildStatApiData.cs delete mode 100644 Modix/Models/InfractionCreationData.cs delete mode 100644 Modix/Models/InfractionData.cs delete mode 100644 Modix/Models/PromotionCommentData.cs delete mode 100644 Modix/Models/PromotionCreationData.cs delete mode 100644 Modix/Models/RoleClaimModifyData.cs delete mode 100644 Modix/Models/SortParameter.cs delete mode 100644 Modix/Models/TableParameters.cs delete mode 100644 Modix/Models/Tags/TagCreationData.cs delete mode 100644 Modix/Models/Tags/TagData.cs delete mode 100644 Modix/Models/Tags/TagMutationData.cs diff --git a/Modix.Data/Models/Core/ModixConfig.cs b/Modix.Data/Models/Core/ModixConfig.cs index 2c48b18d5..3138e878c 100644 --- a/Modix.Data/Models/Core/ModixConfig.cs +++ b/Modix.Data/Models/Core/ModixConfig.cs @@ -2,10 +2,6 @@ { public class ModixConfig { - public string? SeqEndpoint { get; set; } = null; - - public string? SeqKey { get; set; } = null; - public string? DiscordToken { get; set; } = null; public string? StackoverflowToken { get; set; } = null; @@ -27,8 +23,5 @@ public class ModixConfig public string? IlUrl { get; set; } = null; public string WebsiteBaseUrl { get; set; } = "https://mod.gg"; - - public bool EnableStatsd { get; set; } - public bool UseBlazor { get; set; } } } diff --git a/Modix.sln b/Modix.sln index fbd9c65ea..a4c0d56b9 100644 --- a/Modix.sln +++ b/Modix.sln @@ -16,12 +16,10 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{23DA774D-7AE9-48C1-A261-F27D15A07858}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig - build\build.sh = build\build.sh Directory.Build.props = Directory.Build.props Directory.Build.targets = Directory.Build.targets Dockerfile = Dockerfile readme.md = readme.md - build\test.sh = build\test.sh EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modix", "Modix\Modix.csproj", "{C4BE4089-0983-464F-9D76-EE9BD2B708DD}" diff --git a/Modix/ClientApp/.babelrc b/Modix/ClientApp/.babelrc deleted file mode 100644 index a736dde9b..000000000 --- a/Modix/ClientApp/.babelrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "presets": [ - "@vue/app" - ] -} \ No newline at end of file diff --git a/Modix/ClientApp/.env b/Modix/ClientApp/.env deleted file mode 100644 index cd004fc42..000000000 --- a/Modix/ClientApp/.env +++ /dev/null @@ -1 +0,0 @@ -VUE_APP_SPOOPY=false \ No newline at end of file diff --git a/Modix/ClientApp/.gitignore b/Modix/ClientApp/.gitignore deleted file mode 100644 index d7efd2016..000000000 --- a/Modix/ClientApp/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -.DS_Store -node_modules -/dist - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln diff --git a/Modix/ClientApp/.postcssrc b/Modix/ClientApp/.postcssrc deleted file mode 100644 index ed0149bf8..000000000 --- a/Modix/ClientApp/.postcssrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugins": { - "autoprefixer": {} - } -} \ No newline at end of file diff --git a/Modix/ClientApp/dev-server-running.js b/Modix/ClientApp/dev-server-running.js deleted file mode 100644 index b4a3f74cb..000000000 --- a/Modix/ClientApp/dev-server-running.js +++ /dev/null @@ -1,12 +0,0 @@ -const http = require('http'); - -//Check if the dev server is running by making a web request -//to localhost:8080. If you change your dev server port, change this -//too. Hardcoding sucks but it's better than build collisions. - -http.get('http://localhost:8080', (resp) => { - //If it's up, don't do anything - error code 0 -}) -.on("error", (err) => { - return process.exit(1); -}); \ No newline at end of file diff --git a/Modix/ClientApp/package-lock.json b/Modix/ClientApp/package-lock.json deleted file mode 100644 index e7eaae11e..000000000 --- a/Modix/ClientApp/package-lock.json +++ /dev/null @@ -1,10921 +0,0 @@ -{ - "name": "Modix.Frontend", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", - "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.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 - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "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" - } - }, - "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 - } - } - }, - "@types/chart.js": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.14.tgz", - "integrity": "sha512-lIyfmshUIwrJaS5TYleOKd8+0CTy/eFPu7djcphvdy97xdSxMNG25wSYQjFitm2qkgjVjQfQ6YW6lSGlTlg8eA==", - "dev": true, - "requires": { - "moment": "^2.10.2" - } - }, - "@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/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.14.149", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", - "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", - "dev": true - }, - "@types/lodash-es": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.3.tgz", - "integrity": "sha512-iHI0i7ZAL1qepz1Y7f3EKg/zUMDwDfTzitx+AlHhJJvXwenP682ZyGbgPSc5Ej3eEAKVbNWKFuwOadCj5vBbYQ==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "12.12.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.28.tgz", - "integrity": "sha512-g73GJYJDXgf0jqg+P9S8h2acWbDXNkoCX8DLtJVu7Fkn788pzQ/oJsrdJz/2JejRf/SjfZaAhsw+3nd1D5EWGg==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - }, - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", - "dev": true - }, - "@types/react": { - "version": "16.9.22", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.22.tgz", - "integrity": "sha512-7OSt4EGiLvy0h5R7X+r0c7S739TCU/LvWbkNOrm10lUwNHe7XPz5OLhLOSZeCkqO9JSCly1NkYJ7ODTUqVnHJQ==", - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" - } - }, - "@types/webpack-env": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.1.tgz", - "integrity": "sha512-eWN5ElDTeBc5lRDh95SqA8x18D0ll2pWudU3uWiyfsRmIZcmUXpEsxPU+7+BsdCrO2vfLRC629u/MmjbmF+2tA==", - "dev": true - }, - "@vue/cli-overlay": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.2.2.tgz", - "integrity": "sha512-6hMYDkH/rSzFkSKuu/EfTXVkUaBDR6sq5vJ161pN1q46zUB5uN1L7rJHQDjxTy1EZazk1MqU5cS10vRVhIeWvw==", - "dev": true - }, - "@vue/cli-plugin-router": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.2.2.tgz", - "integrity": "sha512-F6uYaKKpXXgub9vd3QFNS673HIXB8+U2XGtLp7yUo00/iuLWodrzPE1zLk6i/R6o/MCtDU6Tqfow/fFeIFVLZg==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.2.2" - } - }, - "@vue/cli-plugin-typescript": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.2.2.tgz", - "integrity": "sha512-TmLL9xy2eT2Ah7wDMNbVXJ9tf7dOeYLkatZo63g0H0Gho8GrGhc8Y9QlZQroFgy/sU6eDoHGrhgT17ztSmslMA==", - "dev": true, - "requires": { - "@types/webpack-env": "^1.15.1", - "@vue/cli-shared-utils": "^4.2.2", - "cache-loader": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^1.5.1", - "globby": "^9.2.0", - "thread-loader": "^2.1.3", - "ts-loader": "^6.2.1", - "tslint": "^5.20.1", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - } - }, - "@vue/cli-plugin-vuex": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.2.2.tgz", - "integrity": "sha512-/Bir5gCjesHSa+2F2CDD10QefuGJogIJ5VA6wp+zARjDIl4xg2f0SbROnompBS03K7cNNDdRXdS/o/fzKmH1yg==", - "dev": true - }, - "@vue/cli-service": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.2.2.tgz", - "integrity": "sha512-uB+32EoXL3FvgJ/uReDMGT6KohX++qilWN58Dzgi5ixrgD1abQgIjGr9AW5SATwjcWNbU0uKP4FltWq56dxswA==", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^4.2.2", - "@vue/cli-plugin-router": "^4.2.2", - "@vue/cli-plugin-vuex": "^4.2.2", - "@vue/cli-shared-utils": "^4.2.2", - "@vue/component-compiler-utils": "^3.0.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.1.0", - "acorn-walk": "^7.0.0", - "address": "^1.1.2", - "autoprefixer": "^9.7.4", - "browserslist": "^4.8.6", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.1.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.4.2", - "cssnano": "^4.1.10", - "current-script-polyfill": "^1.0.0", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.0", - "pnp-webpack-plugin": "^1.6.0", - "portfinder": "^1.0.25", - "postcss-loader": "^3.0.0", - "ssri": "^7.1.0", - "terser-webpack-plugin": "^2.3.4", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.8.3", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.6.0", - "webpack-chain": "^6.3.1", - "webpack-dev-server": "^3.10.2", - "webpack-merge": "^4.2.2" - }, - "dependencies": { - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "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 - }, - "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": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "terser-webpack-plugin": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", - "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", - "dev": true, - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^25.1.0", - "p-limit": "^2.2.2", - "schema-utils": "^2.6.4", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.4.3", - "webpack-sources": "^1.4.3" - } - } - } - }, - "@vue/cli-shared-utils": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.2.2.tgz", - "integrity": "sha512-EK5wcxgjadqUpSzfh6Bnxd46Zx+SAaHusygqV11UZKHr4EObc/SjCpq7c7drmFkBjRqmVvrHs4jRnJJo5VgCgQ==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.87.0", - "request-promise-native": "^1.0.8", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "@vue/component-compiler-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.1.tgz", - "integrity": "sha512-+lN3nsfJJDGMNz7fCpcoYIORrXo0K3OTsdr8jCM7FuqdI4+70TY6gxY6viJ2Xi1clqyPg7LpeOWwjF31vSMmUw==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.14", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "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 - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", - "dev": true - }, - "@vue/web-component-wrapper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", - "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "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.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "acorn-walk": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", - "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", - "dev": true - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "dev": true - }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "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 - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "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": { - "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": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", - "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==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "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" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "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 - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", - "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", - "dev": true, - "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" - } - }, - "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.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true - }, - "axios": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", - "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "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 - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "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" - } - } - } - }, - "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==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.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": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "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" - } - }, - "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" - } - } - } - }, - "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.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" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "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==", - "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.30001236", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001236.tgz", - "integrity": "sha512-o0PRQSrSCGJKCPZcgMzl5fUaj5xHe8qA2m4QRvnyY4e1lITqoNkr7q/Oh1NcpGSy0Th97UZ35yoKcINPoq7YOQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.752", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz", - "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==", - "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 - } - } - }, - "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" - } - }, - "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==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", - "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", - "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-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "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 - }, - "bulma": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.8.0.tgz", - "integrity": "sha512-nhf3rGyiZh/VM7FrSJ/5KeLlfaFkXz0nYcXriynfPH4vVpnxnqyEwaNGdNCVzHyyCA3cHgkQAMpdF/SFbFGZfA==" - }, - "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", - "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", - "dev": true, - "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.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 - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001028", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001028.tgz", - "integrity": "sha512-Vnrq+XMSHpT7E+LWoIYhs3Sne8h9lx9YJV3acH3THNCwU/9zV93/ta4xVfzTtnqd3rvnuVpVjE3DFqf56tr3aQ==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", - "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "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" - } - }, - "chart.js": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", - "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "chartjs-color": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", - "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", - "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "requires": { - "color-name": "^1.0.0" - } - }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, - "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" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "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" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "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" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-highlight": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.4.tgz", - "integrity": "sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "highlight.js": "^9.6.0", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^5.1.1", - "yargs": "^15.0.0" - }, - "dependencies": { - "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": { - "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" - } - }, - "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.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" - } - } - } - }, - "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", - "dev": true - }, - "clipboard": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", - "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "clipboardy": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.2.0.tgz", - "integrity": "sha512-9ry9nC3VFULNmoEIqvuRwCIQ9M7wjnm4O+yvk7xkmhR+7FAUWaeX751oeYJbORg0h0zmqW1EVDoZK8f7yapwbg==", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "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 - } - } - }, - "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": { - "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 - }, - "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==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - } - } - }, - "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==" - }, - "color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "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 - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 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": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "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" - } - }, - "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 - } - } - }, - "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" - } - }, - "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 - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "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-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 - }, - "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-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" - } - }, - "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": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", - "dev": true, - "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "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" - } - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "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 - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "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" - } - }, - "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-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 - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", - "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.23", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.1", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.2", - "schema-utils": "^2.6.0" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", - "dev": true - }, - "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": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.37" - } - }, - "csstype": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", - "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==" - }, - "current-script-polyfill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", - "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "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-fns": { - "version": "2.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.0.0-alpha.7.tgz", - "integrity": "sha1-JFrRb5V2Tqur+ywKQf1dAzwg5Xo=" - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "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" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "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" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - }, - "default-gateway": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", - "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", - "dev": true, - "requires": { - "execa": "^3.3.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "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 - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "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" - } - } - } - }, - "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-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": { - "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 - } - } - }, - "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 - }, - "delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" - }, - "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 - }, - "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" - } - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, - "diacriticless": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/diacriticless/-/diacriticless-1.0.1.tgz", - "integrity": "sha1-592peMKRlgm7SK7h78XeajN71MM=" - }, - "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" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "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-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true - } - } - }, - "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": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "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" - } - }, - "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", - "dev": true - }, - "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 - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "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 - }, - "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" - } - }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "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" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "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" - } - }, - "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" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "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 - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true - }, - "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", - "dev": true - }, - "eventsource": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.1.tgz", - "integrity": "sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==", - "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" - } - }, - "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" - } - } - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "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 - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "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" - } - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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 - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - } - } - }, - "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": { - "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" - } - } - } - }, - "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" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "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==", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "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 - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "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" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz", - "integrity": "sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "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": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "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" - } - }, - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.6.0.tgz", - "integrity": "sha512-vqOY5gakcoon2s12V7MMe01OPwfgqulUWFzm+geQaPPOBKjW1I7aqqoBVlU0ECn97liMB0ECs16pRdIGe9qdRw==", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^2.0.4", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "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": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "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" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "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" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "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": { - "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" - } - }, - "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": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "optional": true - } - } - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "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 - }, - "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" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - } - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "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": { - "pump": "^3.0.0" - } - }, - "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": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "requires": { - "delegate": "^3.1.2" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.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 - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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 - }, - "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": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "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": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "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-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "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": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "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 - }, - "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 - }, - "highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", - "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" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "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==", - "dev": true - }, - "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": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "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-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "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" - } - } - } - }, - "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-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "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": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "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": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "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 - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "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" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "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 - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "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-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "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": { - "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" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", - "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 - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "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": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "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" - } - } - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "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.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "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.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, - "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": "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-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.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "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" - } - }, - "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": { - "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-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "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-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "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 - }, - "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" - } - }, - "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-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "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 - }, - "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": { - "is-path-inside": "^2.1.0" - } - }, - "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": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "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": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "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 - }, - "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 - }, - "javascript-stringify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", - "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", - "dev": true - }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.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==", - "dev": true - }, - "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" - } - } - } - }, - "js-base64": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz", - "integrity": "sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==", - "dev": true - }, - "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", - "dev": true - }, - "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", - "dev": true, - "requires": { - "easy-stack": "^1.0.0" - } - }, - "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 - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "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==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "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==", - "dev": true - }, - "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 - }, - "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": "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" - } - }, - "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" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "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 - }, - "launch-editor": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", - "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", - "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", - "dev": true, - "requires": { - "launch-editor": "^2.2.1" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "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 - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "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": "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": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", - "dev": true - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "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 - }, - "lodash.transform": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", - "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "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==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", - "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.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 - }, - "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": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "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", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "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": { - "object-visit": "^1.0.0" - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "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 - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "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" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "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 - }, - "merge-source-map": { - "version": "1.1.0", - "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": { - "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 - } - } - }, - "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==", - "dev": true - }, - "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "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==", - "dev": true, - "requires": { - "mime-db": "1.43.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "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" - } - } - } - }, - "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": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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" - } - }, - "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": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "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", - "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" - } - } - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "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": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "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 - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "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 - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" - } - }, - "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": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "2.2.5", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "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 - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "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" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "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 - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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==", - "dev": true - }, - "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 - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "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": { - "path-key": "^2.0.0" - } - }, - "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": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "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", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "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 - }, - "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": { - "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" - } - }, - "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" - } - } - } - }, - "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-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "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-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": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "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=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", - "dev": true - }, - "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": { - "is-wsl": "^1.1.0" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "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" - } - } - } - }, - "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": { - "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-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-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "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", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "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" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "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" - } - }, - "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" - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", - "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", - "dev": true, - "requires": { - "parse5": "^5.1.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "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", - "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-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": "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" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", - "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", - "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": { - "pinkie": "^2.0.0" - } - }, - "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": { - "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" - } - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "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 - } - } - }, - "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": "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" - }, - "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 - }, - "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" - } - } - } - }, - "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", - "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" - } - }, - "postcss-modules-scope": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", - "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "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.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 - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", - "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": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "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" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "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" - } - } - } - }, - "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 - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "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 - }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", - "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==", - "dev": true, - "requires": { - "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 - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.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" - }, - "dependencies": { - "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 - } - } - }, - "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" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - } - } - }, - "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" - } - }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "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 - }, - "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", - "dev": true, - "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.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 - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "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" - } - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "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 - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "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" - } - }, - "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", - "dev": true, - "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "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 - }, - "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.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "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 - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.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 - }, - "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": "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" - } - }, - "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" - } - }, - "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" - } - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "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-graph": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", - "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^13.3.2" - }, - "dependencies": { - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "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 - }, - "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" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", - "dev": true, - "requires": { - "node-forge": "0.9.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 - }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "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==", - "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 - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "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-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 - }, - "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 - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "dependencies": { - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - } - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-markdown": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/simple-markdown/-/simple-markdown-0.7.2.tgz", - "integrity": "sha512-XfCvqqzMyzRj4L7eIxJgGaQ2Gaxr20GhTFMB+1yuY8q3xffjzmOg4Q5tC0kcaJPV42NNUHCQDaRK6jzi3/RhrA==", - "requires": { - "@types/react": ">=16.0.0" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "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==", - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.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 - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "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.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" - } - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "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==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "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 - } - } - }, - "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": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "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 - }, - "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" - } - } - } - }, - "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" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "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" - } - }, - "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" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stackframe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", - "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==", - "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=", - "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" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "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" - } - }, - "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" - } - }, - "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 - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "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" - }, - "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 - }, - "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.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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "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==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.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" - }, - "dependencies": { - "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 - } - } - }, - "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" - }, - "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-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.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 - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "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": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "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 - } - } - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", - "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "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" - } - }, - "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.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" - }, - "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-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, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.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, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "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": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "ts-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", - "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.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" - } - }, - "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 - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "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" - } - } - } - }, - "ts-pnp": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", - "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==", - "dev": true - }, - "tslib": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz", - "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==", - "dev": true - }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "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", - "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.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "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" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz", - "integrity": "sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ==", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "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 - } - } - }, - "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 - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "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": { - "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" - } - } - } - }, - "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 - }, - "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" - } - }, - "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 - } - } - }, - "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "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 - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "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 - }, - "v-tooltip": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.0.3.tgz", - "integrity": "sha512-KZZY3s+dcijzZmV2qoDH4rYmjMZ9YKGBVoUznZKQX0e3c2GjpJm3Sldzz8HHH2Ud87JqhZPB4+4gyKZ6m98cKQ==", - "requires": { - "lodash": "^4.17.15", - "popper.js": "^1.16.0", - "vue-resize": "^0.4.5" - } - }, - "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" - } - }, - "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 - }, - "vue": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", - "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" - }, - "vue-class-component": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.3.tgz", - "integrity": "sha512-oEqYpXKaFN+TaXU+mRLEx8dX0ah85aAJEe61mpdoUrq0Bhe/6sWhyZX1JjMQLhVsHAkncyhedhmCdDVSasUtDw==" - }, - "vue-clipboards": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/vue-clipboards/-/vue-clipboards-1.3.0.tgz", - "integrity": "sha512-VMDYHpLQH0EUmqfk9b5XMrkvSu/HjNsLW2EBR4OS6JZHcv/PxmWYdoTBPVlp5eYrhWy07La8nWpRwAh09Mgufw==", - "requires": { - "clipboard": "^1.7.1" - } - }, - "vue-good-table": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/vue-good-table/-/vue-good-table-2.16.3.tgz", - "integrity": "sha512-1cvS8Cv4MK3YkF3cJzrvlKfnQXZZabQtUth2856a9IQTn7+Xyt+ITTKQ7eBoWgReRadxX94OU1CGBMESDXmZAA==", - "requires": { - "date-fns": "2.0.0-alpha.7", - "diacriticless": "1.0.1", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.5.0", - "lodash.filter": "^4.6.0", - "lodash.foreach": "^4.5.0", - "lodash.isequal": "^4.5.0" - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-loader": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.0.tgz", - "integrity": "sha512-FeDHvTSpwyLeF7LIV1PYkvqUQgTJ8UmOxhSlCyRSxaXCKk+M6NF4tDQsLsPPNeDPyR7TfRQ8MLg6v+8PsDV9xQ==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - } - } - }, - "vue-property-decorator": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.4.0.tgz", - "integrity": "sha512-0o85LJSTLZvDaB7IXfmpONfAQZ7NgScFvptFSrlFFSsScR716muJb3mMFojNnKC3Vpm7CM4PsmHNdk30uuNpag==", - "requires": { - "vue-class-component": "^7.1.0" - } - }, - "vue-resize": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", - "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==" - }, - "vue-router": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.5.tgz", - "integrity": "sha512-BszkPvhl7I9h334GjckCh7sVFyjTPMMJFJ4Bsrem/Ik+B/9gt5tgrk8k4gGLO4ZpdvciVdg7O41gW4DisQWurg==" - }, - "vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - } - } - }, - "vue-template-compiler": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", - "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.2.tgz", - "integrity": "sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==" - }, - "vuex-typex": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/vuex-typex/-/vuex-typex-3.1.5.tgz", - "integrity": "sha512-rBefzburdiPSyKzEY7O2vBzD5F3/WKI3dLXPettchAfjtQawwPqbNyunq6fLES2mFAM8fPCjAyFxRiPZb/U6Yg==" - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "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" - } - }, - "webpack": { - "version": "4.41.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.6.tgz", - "integrity": "sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "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": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "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" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", - "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.15", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - } - } - }, - "webpack-chain": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.4.0.tgz", - "integrity": "sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - } - }, - "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": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "webpack-dev-server": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", - "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.6", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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" - } - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "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-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" - } - }, - "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" - } - }, - "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 - }, - "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 - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "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" - } - } - } - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "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" - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "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" - }, - "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 - } - } - }, - "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "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==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "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-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "dev": true, - "requires": { - "microevent.ts": "~0.1.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-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" - } - }, - "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" - } - }, - "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 - }, - "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==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~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==", - "dev": true - }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", - "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", - "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": "^16.1.0" - }, - "dependencies": { - "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 - }, - "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==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - } - } -} diff --git a/Modix/ClientApp/package.json b/Modix/ClientApp/package.json deleted file mode 100644 index 4cfb323e4..000000000 --- a/Modix/ClientApp/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "Modix.Frontend", - "version": "0.1.0", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build --dest ../wwwroot", - "build-dev": "vue-cli-service build --dest ../wwwroot --mode development", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "axios": "^0.21.2", - "bulma": "^0.8.0", - "date-fns": "2.0.0-alpha.7", - "chart.js": "^2.9.4", - "lodash-es": "^4.17.21", - "tinycolor2": "^1.4.1", - "v-tooltip": "^2.0.2", - "vue": "^2.6.11", - "vue-class-component": "^7.2.3", - "vue-clipboards": "^1.3.0", - "vue-good-table": "2.16.3", - "vue-property-decorator": "^8.4.0", - "vue-router": "^3.1.5", - "vuex": "^3.1.2", - "vuex-typex": "^3.1.5", - "simple-markdown": "^0.7.2" - }, - "devDependencies": { - "@types/chart.js": "^2.7.52", - "@types/lodash-es": "^4.17.3", - "@types/node": "^12.12.6", - "@types/webpack-env": "^1.15.1", - "@vue/cli-plugin-typescript": "^4.2.2", - "@vue/cli-service": "^4.2.2", - "node-sass": "4.14.1", - "sass-loader": "^8.0.2", - "typescript": "^3.8.2", - "vue-template-compiler": "^2.6.11" - }, - "optionalDependencies": { - "fsevents": "1.2.9" - }, - "_comment": "fsevent@1.2.9 is locked in to prevent broken builds on windows for v1.2.11" -} diff --git a/Modix/ClientApp/public/favicon.ico b/Modix/ClientApp/public/favicon.ico deleted file mode 100644 index 80429cc0b24fab0731c95da6f2062ec4657629cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmZ{iKWGzS7{=dAE_caYE|=?Fb4^0hh@g^6)gUM?R#0n^(pC^b5C<1mLHx6{!J&Vg z9EymmI=P6GlV}GOI(2XmTcoI+MC_KW{@$bwt+p4QyYGA7=Xu`u`|^qy{PKC>U6Y%p zNI^sn0YXGNaXupCLbrqV{-0N&ph}TUCgWR{bqb8ywmsz?Ng;4^L*#*#uk zlF6i;A0F;{oMTN~(wR&><2VO(4UVQ#soAXO`N~hFtOoj3`gj(GVaoGzU40bw%CSbn zFyV97Ax%(o8r;=&7)JULeCF|3<7@-jY_^`u<&1KWqUs)HtAiXqVAVf@ye*XnoZdOQkLUDL5_qyzV&e2{cXc1paII zpZU&NmVE)vPuBAr8ym7UFYxpX`^f44^qu`#+fLWG(<}JhAlCpV$t{8(^mQB$8JoD& zuD#7?i2OIOq<-+ETJ2BZah2FA_{I8~*7kMaw>?2mPkTr0VR&o!-_rnlouA)^kyzAR z9LEVg_ij&q(-ZA|@QOQ%Ir{>5!Tgt1(_gFYChf-PTkm2&eLkiCQG8x9o4tCL<&~8# zZ?A>U8*^(jXCq(?uOU2SaPY`pk{xmFuTY4kudirwM?U|*%}DIvY~Qp_i~Q*qdFP9K dnh}|M-@z>3ra@eh6j=r9wnz)EYFbkr`~~2jXl(!h diff --git a/Modix/ClientApp/public/index.html b/Modix/ClientApp/public/index.html deleted file mode 100644 index 9a3a19ea8..000000000 --- a/Modix/ClientApp/public/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - Modix - - - -
- - - diff --git a/Modix/ClientApp/src/App.vue b/Modix/ClientApp/src/App.vue deleted file mode 100644 index 99d03ed90..000000000 --- a/Modix/ClientApp/src/App.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/app/Deserializer.ts b/Modix/ClientApp/src/app/Deserializer.ts deleted file mode 100644 index be84e5d5f..000000000 --- a/Modix/ClientApp/src/app/Deserializer.ts +++ /dev/null @@ -1,14 +0,0 @@ -export default class Deserializer -{ - static getNew(testType: new () => T, input: any) : T - { - let instance = new testType() as any; - - for (let prop in input) - { - instance[prop] = input[prop]; - } - - return instance; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/app/ModixRoute.ts b/Modix/ClientApp/src/app/ModixRoute.ts deleted file mode 100644 index 4088c26e1..000000000 --- a/Modix/ClientApp/src/app/ModixRoute.ts +++ /dev/null @@ -1,120 +0,0 @@ -import Vue, { ComponentOptions, AsyncComponent } from 'vue'; -import { RouteConfig, Route } from 'vue-router'; -import _ from 'lodash'; - -export enum RouteType -{ - Redirect = "redirect", - Normal = "normal" -} - -type MixedRoute = ModixRouteData & RedirectRouteData; - -export interface ModixRouteData -{ - path: string; - name: string; - title?: string; - component?: ComponentOptions | typeof Vue | AsyncComponent; - requiredClaims?: string[]; - showInNavbar?: boolean; - children?: ModixRouteData[]; - requiresAuth?: boolean; - isButton?: boolean; - type: RouteType.Normal; - - beforeEnter?: (to: Route, from: Route, next: any) => void; -} - -export interface RedirectRouteData -{ - path: string; - redirectTo: string; - type: RouteType.Redirect; -} - -export default class ModixRoute -{ - routeData: (ModixRouteData | RedirectRouteData); - optionalClaims: string[] = []; - - constructor(data: (ModixRouteData | RedirectRouteData)) - { - this.routeData = data; - - if (this.routeData.type == RouteType.Normal) - { - for (let claim of _.flatMap(this.routeData.children, child => child.requiredClaims)) - { - this.optionalClaims.push(claim as any); - } - } - } - - get requiresAuth() - { - if (this.routeData.type == RouteType.Redirect) - { - return false; - } - - return this.routeData.requiresAuth || (this.routeData.requiredClaims && this.routeData.requiredClaims.length > 0); - } - - get requiredClaims(): string[] - { - if (this.routeData.type == RouteType.Redirect) - { - return []; - } - - return this.routeData.requiredClaims || []; - } - - get isButton(): boolean - { - if (this.routeData.type == RouteType.Redirect) - { - return false; - } - - return (this.routeData.isButton == undefined ? false : this.routeData.isButton); - } - - get title(): string - { - if (this.routeData.type == RouteType.Redirect) - { - return "Redirecting..."; - } - - return this.routeData.title || this.routeData.name; - } - - asVueRoute(): RouteConfig - { - let ret: RouteConfig = { path: "" }; - - switch (this.routeData.type) - { - case RouteType.Redirect: - ret = { - path: this.routeData.path, - redirect: { name: this.routeData.redirectTo } - }; - break; - default: - ret = { - path: this.routeData.path, - name: this.routeData.name, - component: this.routeData.component, - beforeEnter: this.routeData.beforeEnter, - children: _.map(this.routeData.children, route => new ModixRoute(route as any).asVueRoute()), - meta: this - }; - break; - } - - return ret; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/app/Store.ts b/Modix/ClientApp/src/app/Store.ts deleted file mode 100644 index e19c2db32..000000000 --- a/Modix/ClientApp/src/app/Store.ts +++ /dev/null @@ -1,157 +0,0 @@ -import _ from 'lodash'; -import ModixState from "@/models/ModixState"; -import { ModuleHelpData } from "@/models/ModuleHelpData"; -import PromotionCampaign from "@/models/promotions/PromotionCampaign"; -import RootState from "@/models/RootState"; -import User from "@/models/User"; -import GeneralService from "@/services/GeneralService"; -import Vue from "vue"; -import * as Vuex from "vuex"; -import { BareActionContext, getStoreBuilder } from "vuex-typex"; -import DesignatedChannelMapping from '@/models/moderation/DesignatedChannelMapping'; -import ConfigurationService from '@/services/ConfigurationService'; -import PromotionService from '@/services/PromotionService'; -import Role from '@/models/Role'; -import Claim from '@/models/Claim'; -import Guild from '@/models/Guild'; -import DesignatedRoleMapping from '@/models/moderation/DesignatedRoleMapping'; -import Channel from '@/models/Channel'; -import { AxiosError } from 'axios'; - -Vue.use(Vuex); - -type ModixContext = BareActionContext; - -const modixState: ModixState = -{ - user: null, - errors: [], - commands: [], - campaigns: [], - channelDesignations: [], - channelDesignationTypes: [], - claims: {}, - roles: [], - channels: {}, - guilds: [], - roleMappings: [], - roleDesignationTypes: [] -}; - -const storeBuilder = getStoreBuilder(); -const moduleBuilder = storeBuilder.module("modix", modixState); - -namespace modix -{ - const setUser = (state: ModixState, user: User) => state.user = user; - const setCommands = (state: ModixState, commands: ModuleHelpData[]) => state.commands = commands; - const setCampaigns = (state: ModixState, campaigns: PromotionCampaign[]) => state.campaigns = campaigns; - const setRoles = (state: ModixState, roles: Role[]) => state.roles = roles; - const setGuilds = (state: ModixState, guilds: Guild[]) => state.guilds = guilds; - const setChannels = (state: ModixState, channels: Channel[]) => state.channels = _.keyBy(channels, channel => channel.id); - - const setChannelDesignations = (state: ModixState, mappings: DesignatedChannelMapping[]) => state.channelDesignations = mappings; - const setChannelDesignationTypes = (state: ModixState, types: string[]) => state.channelDesignationTypes = types.sort((a, b) => a.localeCompare(b)); - const setRoleDesignations = (state: ModixState, mappings: DesignatedRoleMapping[]) => state.roleMappings = mappings; - const setRoleDesignationTypes = (state: ModixState, types: string[]) => state.roleDesignationTypes = types.sort((a, b) => a.localeCompare(b)); - const setClaims = (state: ModixState, claims: {[claim: string]: Claim[]}) => state.claims = claims; - - const getHasTriedAuth = (state: ModixState) => state.user != null; - const getIsLoggedIn = (state: ModixState) => state.user && state.user.userId; - const getCurrentClaims = (state: ModixState) => (state.user && state.user.claims) || []; - const getCurrentGuild = (state: ModixState) => _.find(state.guilds, (guild: Guild) => guild.id == state.user!.selectedGuild); - const getCurrentUser = (state: ModixState) => state.user; - - const pushError = (state: ModixState, error: string) => state.errors.push(error); - const removeError = (state: ModixState, error: string) => state.errors.splice(state.errors.indexOf(error), 1); - const clearErrors = (state: ModixState) => state.errors = []; - - const updateUserInfo = async (context: ModixContext) => mutatingServiceCall(GeneralService.getUser, setUser, context, (err: AxiosError) => - { - if (err.response) - { - if (err.response.status != 401) - { - modix.pushErrorMessage(err.toString()); - return; - } - - //else we're just not logged in - setUser(context.state, new User()); - } - }); - - const updateGuilds = async (context: ModixContext) => mutatingServiceCall(GeneralService.getGuilds, setGuilds, context); - const updateCommands = async (context: ModixContext) => mutatingServiceCall(GeneralService.getCommands, setCommands, context); - const updateCampaigns = async (context: ModixContext) => mutatingServiceCall(PromotionService.getCampaigns, setCampaigns, context); - const updateRoles = async (context: ModixContext) => mutatingServiceCall(GeneralService.getGuildRoles, setRoles, context); - const updateChannels = async (context: ModixContext) => mutatingServiceCall(GeneralService.getChannels, setChannels, context); - - const updateChannelDesignations = async (context: ModixContext) => mutatingServiceCall(ConfigurationService.getChannelDesignations, setChannelDesignations, context); - const updateChannelDesignationTypes = async (context: ModixContext) => mutatingServiceCall(ConfigurationService.getChannelDesignationTypes, setChannelDesignationTypes, context); - const updateRoleDesignations = async (context: ModixContext) => mutatingServiceCall(ConfigurationService.getRoleDesignations, setRoleDesignations, context); - const updateRoleDesignationTypes = async (context: ModixContext) => mutatingServiceCall(ConfigurationService.getRoleDesignationTypes, setRoleDesignationTypes, context); - const updateClaims = async (context: ModixContext) => mutatingServiceCall(GeneralService.getClaims, setClaims, context); - - export const retrieveUserInfo = moduleBuilder.dispatch(updateUserInfo); - export const retrieveCommands = moduleBuilder.dispatch(updateCommands); - export const retrieveCampaigns = moduleBuilder.dispatch(updateCampaigns); - export const retrieveChannelDesignations = moduleBuilder.dispatch(updateChannelDesignations); - export const retrieveChannelDesignationTypes = moduleBuilder.dispatch(updateChannelDesignationTypes); - export const retrieveRoleDesignations = moduleBuilder.dispatch(updateRoleDesignations); - export const retrieveRoleDesignationTypes = moduleBuilder.dispatch(updateRoleDesignationTypes); - export const retrieveClaims = moduleBuilder.dispatch(updateClaims); - export const retrieveRoles = moduleBuilder.dispatch(updateRoles); - export const retrieveChannels = moduleBuilder.dispatch(updateChannels); - export const retrieveGuilds = moduleBuilder.dispatch(updateGuilds); - - export const pushErrorMessage = moduleBuilder.commit(pushError); - export const removeErrorMessage = moduleBuilder.commit(removeError); - export const clearErrorMessages = moduleBuilder.commit(clearErrors); - - export const hasTriedAuth = moduleBuilder.read(getHasTriedAuth); - export const isLoggedIn = moduleBuilder.read(getIsLoggedIn); - export const currentClaims = moduleBuilder.read(getCurrentClaims); - export const currentGuild = moduleBuilder.read(getCurrentGuild); - export const currentUser = moduleBuilder.read(getCurrentUser); - - export const userHasClaims = (claims: string[]) => - { - let diff = _.difference(claims, (modixState.user && modixState.user.claims) || []); - - return diff.length === 0; - }; -} - -export default modix; - -const mutatingServiceCall = async function -( - serviceAction: () => Promise, - mutator: (state: ModixState, param: any) => void, - context: ModixContext, - actionError: ((err: AxiosError) => void) | null = null -) -{ - try - { - let result = await serviceAction(); - - mutator(context.state, result); - } - catch (err) - { - if (actionError != null && err.response) - { - actionError(err); - } - else - { - let message = `${err} while attempting service call. Call an admin!`; - modix.pushErrorMessage(message); - console.trace(err); - } - } -} - -export const vuexStore = storeBuilder.vuexStore(); \ No newline at end of file diff --git a/Modix/ClientApp/src/app/ThemeConfiguration.ts b/Modix/ClientApp/src/app/ThemeConfiguration.ts deleted file mode 100644 index b665976e1..000000000 --- a/Modix/ClientApp/src/app/ThemeConfiguration.ts +++ /dev/null @@ -1,8 +0,0 @@ -import {config} from '@/models/PersistentConfig' - -const themeFiles = (require).context('@/assets/', true, /^.*\.png$/); - -export default (filename: string): string => -{ - return themeFiles('./' + config().theme + '/' + filename); -} \ No newline at end of file diff --git a/Modix/ClientApp/src/app/Util.ts b/Modix/ClientApp/src/app/Util.ts deleted file mode 100644 index 51fc51882..000000000 --- a/Modix/ClientApp/src/app/Util.ts +++ /dev/null @@ -1,92 +0,0 @@ -import * as _ from 'lodash'; -import ModixState from '@/models/ModixState'; -import toHTML from '@/app/discord-markdown'; -import * as dateformat from 'date-fns'; - -export const dateInputFormat = "YYYY-MM-DDTHH:mm:ss"; -export const dateFormat = "MM/DD/YY, h:MM:ss A"; - -export const formatDate = (date: Date): string => -{ - if (!date) - { - return ''; - } - - return dateformat.format(date, dateFormat); -} - -export const toTitleCase = (str: string): string => -{ - return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); -} - -export const ordinalize = (value: number): string => -{ - let rounded = Math.round(value); - let asString = rounded.toString(); - - if ((Math.floor(rounded / 10) % 10) == 1) - { - return asString + "th"; - } - - switch (rounded % 10) - { - case 1: return asString + "st"; - case 2: return asString + "nd"; - case 3: return asString + "rd"; - default: return asString + "th"; - } -} - -export const toQuantity = (quantity: number, singular: string, plural: string): string => -{ - let quantityString = quantity.toString(); - - return quantity == 1 - ? quantityString + " " + singular - : quantityString + " " + plural; -} - -export const getCookie = (name: string) => -{ - var re = new RegExp(name + "=([^;]+)"); - var value = re.exec(document.cookie); - return (value != null) ? unescape(value[1]) : null; -} - -export const parseDiscordContent = (store: ModixState, content: string): string => -{ - return toHTML(content, {discordCallback: { - channel: (channel: any) => - { - let foundChannel: any = store.channels[channel.id]; - - if (foundChannel == undefined) - { - foundChannel = channel.id; - } - else - { - foundChannel = foundChannel.name; - } - - return `#${_.escape(foundChannel)}`; - }, - user: (user: any) => `@${user.id}`, - role: (role: any) => - { - let foundRole = store.roles.find(r => r.id == role.id); - - if (foundRole) - { - return `@${_.escape(foundRole.name)}`; - } - else - { - return `@${_.escape(role.id)}`; - } - }, - }}); -}; \ No newline at end of file diff --git a/Modix/ClientApp/src/app/discord-markdown/LICENSE b/Modix/ClientApp/src/app/discord-markdown/LICENSE deleted file mode 100644 index 77e6e1e67..000000000 --- a/Modix/ClientApp/src/app/discord-markdown/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Brussell - -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 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. diff --git a/Modix/ClientApp/src/app/discord-markdown/index.js b/Modix/ClientApp/src/app/discord-markdown/index.js deleted file mode 100644 index 6f0bc81f8..000000000 --- a/Modix/ClientApp/src/app/discord-markdown/index.js +++ /dev/null @@ -1,278 +0,0 @@ -const markdown = require('simple-markdown'); -import hljs from 'highlight.js/lib/highlight'; - -['cs', 'json'].forEach((langName) => { - // Using require() here because import() support hasn't landed in Webpack yet - const langModule = require(`highlight.js/lib/languages/${langName}`); - hljs.registerLanguage(langName, langModule); -}); - -function htmlTag(tagName, content, attributes, isClosed = true, state = { }) { - if (typeof isClosed === 'object') { - state = isClosed; - isClosed = true; - } - - if (!attributes) - attributes = { }; - - if (attributes.class && state.cssModuleNames) - attributes.class = attributes.class.split(' ').map(cl => state.cssModuleNames[cl] || cl).join(' '); - - let attributeString = ''; - for (let attr in attributes) { - // Removes falsy attributes - if (Object.prototype.hasOwnProperty.call(attributes, attr) && attributes[attr]) - attributeString += ' ' + attr + '="' + attributes[attr] + '"'; - } - - let unclosedTag = '<' + tagName + attributeString + '>'; - - if (isClosed) - return unclosedTag + content + ''; - return unclosedTag; -} -markdown.htmlTag = htmlTag; - -const rules = { - codeBlock: Object.assign({ }, markdown.defaultRules.codeBlock, { - html: (node, output, state) => { - let code; - if (node.lang && hljs.getLanguage(node.lang)) - code = hljs.highlight(node.lang, node.content, true); // Discord seems to set ignore ignoreIllegals: true - - if (code && state.cssModuleNames) // Replace classes in hljs output - code.value = code.value.replace(//gi, (str, m) => - str.replace(m, m.split(' ').map(cl => state.cssModuleNames[cl] || cl).join(' '))); - - return htmlTag('pre', htmlTag( - 'code', code ? code.value : node.content, { class: `hljs${code ? ' ' + code.language : ''}` }, state - ), null, state); - } - }), - fence: Object.assign({ }, markdown.defaultRules.fence, { - match: markdown.inlineRegex(/^ *(`{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n *)*/) - }), - newline: markdown.defaultRules.newline, - escape: markdown.defaultRules.escape, - autolink: Object.assign({ }, markdown.defaultRules.autolink, { - parse: capture => { - return { - content: [{ - type: 'text', - content: capture[1] - }], - target: capture[1] - }; - }, - html: (node, output, state) => { - return htmlTag('a', output(node.content, state), { href: markdown.sanitizeUrl(node.target) }, state); - } - }), - url: Object.assign({ }, markdown.defaultRules.url, { - parse: capture => { - return { - content: [{ - type: 'text', - content: capture[1] - }], - target: capture[1] - } - }, - html: (node, output, state) => { - return htmlTag('a', output(node.content, state), { href: markdown.sanitizeUrl(node.target) }, state); - } - }), - em: markdown.defaultRules.em, - strong: markdown.defaultRules.strong, - u: markdown.defaultRules.u, - del: Object.assign({ }, markdown.defaultRules.del, { - match: markdown.inlineRegex(/^~~(\s*?(?:\\[\s\S]|~(?!~)|[^\s\\~]|\s+(?!~~))+?\s*?)~~/), - }), - inlineCode: markdown.defaultRules.inlineCode, - text: Object.assign({ }, markdown.defaultRules.text, { - match: source => /^[\s\S]+?(?=[^0-9A-Za-z\s\u00c0-\uffff-]|\n\n|\n|\w+:\S|$)/.exec(source), - html: function(node, output, state) { - if (state.escapeHTML) - return markdown.sanitizeText(node.content); - - return node.content; - } - }), - specialCaseArms: { - order: markdown.defaultRules.escape.order - 0.5, - match: source => /^¯\\_\(ツ\)_\/¯/.exec(source), - parse: function(capture, parse, state) { - return { - content: parse(capture[0].replace(/^¯\\_\(ツ\)_\/¯/, '¯\\\\\\_(ツ)_/¯'), state) - }; - }, - html: function(node, output, state) { - return output(node.content, state); - }, - }, - br: Object.assign({ }, markdown.defaultRules.br, { - match: markdown.anyScopeRegex(/^\n/), - }), - spoiler: { - order: 0, - match: source => /^\|\|((?:.|\n)+?)\|\|/.exec(source), - parse: function(capture, parse, state) { - return { - content: parse(capture[1], state) - }; - }, - html: function(node, output, state) { - return htmlTag('span', output(node.content, state), { class: 'd-spoiler' }, state); - } - } -}; - -const discordCallbackDefaults = { - user: node => '@' + node.id, - channel: node => '#' + node.id, - role: node => '&' + node.id, - emoji: node => ':' + markdown.sanitizeText(node.name) + ':', - everyone: () => '@everyone', - here: () => '@here' -}; - -let discordCallback = discordCallbackDefaults; - -const rulesDiscord = { - discordUser: { - order: markdown.defaultRules.strong.order, - match: source => /^<@!?([0-9]*)>/.exec(source), - parse: function(capture) { - return { - id: capture[1] - }; - }, - html: function(node, output, state) { - return htmlTag('span', discordCallback.user(node), { class: 'd-mention d-user' }, state); - } - }, - discordChannel: { - order: markdown.defaultRules.strong.order, - match: source => /^<#?([0-9]*)>/.exec(source), - parse: function(capture) { - return { - id: capture[1] - }; - }, - html: function(node, output, state) { - return htmlTag('span', discordCallback.channel(node), { class: 'd-mention d-channel' }, state); - } - }, - discordRole: { - order: markdown.defaultRules.strong.order, - match: source => /^<@&([0-9]*)>/.exec(source), - parse: function(capture) { - return { - id: capture[1] - }; - }, - html: function(node, output, state) { - return htmlTag('span', discordCallback.role(node), { class: 'd-mention d-role' }, state); - } - }, - discordEmoji: { - order: markdown.defaultRules.strong.order, - match: source => /^<(a?):(\w+):([0-9]*)>/.exec(source), - parse: function(capture) { - return { - animated: capture[1] === "a", - name: capture[2], - id: capture[3], - }; - }, - html: function(node, output, state) { - return htmlTag('span', discordCallback.emoji(node), { class: `d-emoji${node.animated ? ' d-emoji-animated' : ''}` }, state); - } - }, - discordEveryone: { - order: markdown.defaultRules.strong.order, - match: source => /^@everyone/.exec(source), - parse: function() { - return { }; - }, - html: function(node, output, state) { - return htmlTag('span', discordCallback.everyone(node), { class: 'd-mention d-user' }, state); - } - }, - discordHere: { - order: markdown.defaultRules.strong.order, - match: source => /^@here/.exec(source), - parse: function() { - return { }; - }, - html: function(node, output, state) { - return htmlTag('span', discordCallback.here(node), { class: 'd-mention d-user' }, state); - } - } -}; -Object.assign(rules, rulesDiscord); - -const rulesDiscordOnly = Object.assign({ }, rulesDiscord, { - text: Object.assign({ }, markdown.defaultRules.text, { - match: source => /^[\s\S]+?(?=[^0-9A-Za-z\s\u00c0-\uffff-]|\n\n|\n|\w+:\S|$)/.exec(source), - html: function(node, output, state) { - if (state.escapeHTML) - return markdown.sanitizeText(node.content); - - return node.content; - } - }) -}); - - -const rulesEmbed = Object.assign({ }, rules, { - link: markdown.defaultRules.link -}); - -const parser = markdown.parserFor(rules); -const htmlOutput = markdown.htmlFor(markdown.ruleOutput(rules, 'html')); -const parserDiscord = markdown.parserFor(rulesDiscordOnly); -const htmlOutputDiscord = markdown.htmlFor(markdown.ruleOutput(rulesDiscordOnly, 'html')); -const parserEmbed = markdown.parserFor(rulesEmbed); -const htmlOutputEmbed = markdown.htmlFor(markdown.ruleOutput(rulesEmbed, 'html')); - -/** - * Parse markdown and return the HTML output - * @param {String} source Source markdown content - * @param {Object} [options] Options for the parser - * @param {Boolean} [options.embed=false] Parse as embed content - * @param {Boolean} [options.escapeHTML=true] Escape HTML in the output - * @param {Boolean} [options.discordOnly=false] Only parse Discord-specific stuff (such as mentions) - * @param {Object} [options.discordCallback] Provide custom handling for mentions and emojis - * @param {Object} [options.cssModuleNames] An object mapping css classes to css module classes - */ -export default function toHTML(source, options) { - options = Object.assign({ - embed: false, - escapeHTML: true, - discordOnly: false, - discordCallback: { } - }, options || { }); - - let _parser = parser; - let _htmlOutput = htmlOutput; - if (options.discordOnly) { - _parser = parserDiscord; - _htmlOutput = htmlOutputDiscord; - } else if (options.embed) { - _parser = parserEmbed; - _htmlOutput = htmlOutputEmbed; - } - - // TODO: Move into state - discordCallback = Object.assign({ }, discordCallbackDefaults, options.discordCallback); - - const state = { - inline: true, - escapeHTML: options.escapeHTML, - cssModuleNames: options.cssModuleNames || null - }; - - return _htmlOutput(_parser(source, state), state); -} \ No newline at end of file diff --git a/Modix/ClientApp/src/assets/Default/logo_small.png b/Modix/ClientApp/src/assets/Default/logo_small.png deleted file mode 100644 index afc80efa64de78f36082e93bdf184697f0f8c0c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4240 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 Yf@STVfqyy8d^51KcCfm(W#5ti0kxh|$^ZZW diff --git a/Modix/ClientApp/src/assets/Default/logo_small_selected.png b/Modix/ClientApp/src/assets/Default/logo_small_selected.png deleted file mode 100644 index cd721c24c0a28376e3aae72b06273c340dcaebdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5479 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 L7KZuyXTtsm^mm|Q diff --git a/Modix/ClientApp/src/assets/Holiday/logo_small.png b/Modix/ClientApp/src/assets/Holiday/logo_small.png deleted file mode 100644 index 858955d37254e874648c552111962982e53ba813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6890 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 JoWah0{{tZIK!yMS diff --git a/Modix/ClientApp/src/assets/Holiday/logo_small_selected.png b/Modix/ClientApp/src/assets/Holiday/logo_small_selected.png deleted file mode 100644 index b34103858c803104ee22aa7d477bde9d4982268e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6608 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 diff --git a/Modix/ClientApp/src/assets/Spoopy/logo_small.png b/Modix/ClientApp/src/assets/Spoopy/logo_small.png deleted file mode 100644 index 2d8e851bce051a51ce09c184ecc2d6b9f16f2e82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21757 zcmeI4c|6qH`@rXhvV_4$e-KI3(M8cQx+EltqJt%pNCc8L5{JPO(HJ}$k3r$^R04)dz#&I|Gz_Gn zmYzR@NwqUwJ~ABipT34CpUn?Lo3Cgqd_0g7kYUfq=)?`3_gqboe2n@e0Ml7 znDres!INRNA)gvvYCXu2sV4p)z~}foa5z2&!|rN3I%}kf$&h;@7df%m3{DVFOAkF! zW!!Pbt%0ThA2fg*n~cJcQ8h$hs9!0X*3E+mk!cU z1STDi!jlL9iiW3wD1d<>VnC2aC(?%}`K9_-rcF8Y0D&JsriU{KgF}bRkGU0ylFkm%OGDHN@4b(-uZdL_*m{5OHBfup-e#q=z=6>Ko__#$k0Q7(L4THW11sstgn~z z#}EwLhpB&mj37^t{a5ZkY-&jA`$l*iCO-)92aP-+5BXMP!h&+x;FlT`E$g8L`QC^1 zKUf1E5cv02fP%s4lJNio$`2R}3LryH2>sGgOfpEI=`t8NED0Q4;eYQ6jQcL#6JUFQ z3rhq8ci0XbVrU{6T^NyJHm3qP<|1TQUqCNECr1Y z0<$r3p#R|!=AX-{|DHMj?a2JGI%qhYM3FgMi46Pjm$lGn3HNpFB&ewcwcYTJzg)0q z3r_J+j0h=}plS!Y)S$wsj~1^#nocLEe-Vo#)}eBBw0<2eCx3LC6|elm%V)@C4TuSOR54Y2uS_YPyVT5}|h-8f{1s_FzPDc#UEAyhGkK+zZ_z zLl@ZSu^a5K9B(*B{llN*Gx~=O!_A2XfzuG$7U2?#2reMP1*ajjEy5)f5nMoo3r<65 zTZBs}BDjDE7o3LBwg{I{L~sESE;tRLZ4oY^h~NSuTyPpf+ag>-5y1sSxZpH|wneyv zB7zHuaKUK^ZHsUTMFbZR;eyi;+7{swiU=+s!Ud-xv@OCV6cJoNgbPkXXj_C!C?dFk z2p61&(6$JdP(*M65iU3lp=}W^p@`rDB3y79Lfax-LJ`3QM7ZEIgtkSvgd&0qh;YGa z2yKgS2}J}K5aEK;5ZV^u5{d{eAi@QwA+#;RB@_`{K!giULugxsODH0^fCv|yhS2t3 z;*uW!P8g64eGyC$^o=j4+V*-v-xh3fI%SI+z|+B zG6JE@Nmy659D$IdnwuIq1UI}+X?0R_+F#ypv)^P^-W%%_%Y@E(oe6$63Fg(;%!Bkg zORu>UP%5UnZ>!maP?J%Uv?z*F5t}@9YuSwJ$9?HJN0g!rjb$WrEVeot7vbkHlI+Zn zDNK4T@7Pip!#jFvgGKM>w#O|7y{OMfOY=#JmaoBq%`EW+D(T7YskDgAaZMq;8 zzejrT5w*pW<5#D|e5jmuJbPxkg3O~wgC!xDO~gTkBxWuqrx|nbmSLiEazO^5pEcFQ zRqpi>-7`A*GqY46SzZtp;r_I0&^S3kyoIYgiKm;+*;vJ=iq*8!jt(sOFx5^xR4%@5 zp-IZ;g=fgOvbJ^L4^|l}g>TKARm`orsG>C}ZM`17I)!P5YmB(CH*)@Ixws=ck<8g( zY5(a-iA|MQl?`OfQtd5Z>Wu8jAVBe9r0cC~ro8eD&ei*_lVbL4YrRIiliPgt&f2L5 zvXruII_?y>@jqgw*WEUD?G?LuY1U1>jLqk=5ii{2Rx3Zm^!mGd-Y#pX)SHzcXW3Qh z-rj5oi3y}3rL!Rn(v_$`Vz02+Eix}3)F*pZZGy(B2-IcFZ|Rw{*s(b;l`1}ybFGov+>(~mV)u?lT3&S# z^YBWXM7F}|E*RZ3-MQM9*%o(-VS%2>Ie%ki(T=czkkhQTtmYZQwGpADz8VmdCw;6*@rQRN&UGfHP zWqFrVeF&dE4dip&Uzms8dpFBYhq!B*N7KyNMQsskY{#YVZ)vBmG>9y0nm)a*$~cH5 zVGudpdr23!G9=a8a?88&g}anfB2GQWzdYc=J^k_UtD4a3GS>FBq+f!SH~5hmk8+w+ zPkzFB&1`G4C@rffsovUhp(a$a`m>qKPK!?D)7*0Psv9xVh$vQ!=U(MEQisJ7kG!1v zLbk;DkJiJ`0NR6MlJ+HS*7`XTyR6fS!w_Ps>RF59Ytnnu=*jIp zFMlIYZ26KZMbiRkn2^3jgJKcRbq-;XN-Sw?1HmdP!D8G?&V(BYe zJg6TRC-Xc|yAR*Zzm>U>nCgGBuQm2nq5PA(da-JYS2fI4Y3Rx-Xo~)$=OSjIzJ%Kw zWVx4)op(vX?WP(zR zaQ={ckezM&iTl4?FBS2skp+Rvg^D#0*MPS>3k zsP}ZM$6*zh+#oc4(RNS!tz9-o8+vhT-nmsawyy4;Ul^~PwWH+h3;Wt^`(U*V6vm4P~ZlLF$!gGUw@W=SmD_0h;y2Ae#%rjU)USunO5iCu2a50d>ZeWiL;-T ziQgxm(t^aYIVBwjw*(DPY6rGq0+fuB`x$ie=9@ETi)ea=P>3^O&X|O$J!nT#Z|f9&Z<*>HmM1TDQRbwN?+qw-Pq?@aU^f0bmYo} zk26AdE8LIXAA96egUg3UGn}WWA<^XRMJck@E+i@GRSmDWTIxuQ2js{EACp_qdl{{I zKkbR$#r)YkMPoDE<9VS5WlJ6?Ib7W{Pts1_zD@n2C+FctC^Dh~e*Xxx7VkUMX$UIi zm}=7(y)nB9P*oi&)egA_6w6xGki>1Zcb=N|_Sd}C?Bf~Uk~+7hnTDFhuQTM&I@`vu zZhs`S)Sep$*DuMj(w4*x620`3HaDylQ##w&BfGe@+vZt8u^IE_{e#o{HtsmOJAc5p z!qB~HGS+)ThErpoOoRpRZM>YJ8&}%D$K3POm1W$DDYsu1)k@pkq)K<($BXZMk$SRk zGV~A%*5b7F5j7H|d!#G()u-Vfn-+P*WN2-dbmUZItXNF_)&KlKtBYsTSJy}6EWJ9@ z8lN_{RMQ27QJubPh&^4n9q!L2^nh z_Qn_5e_L_X@#x7DWFTGKrNeIE@#-UK8~f+no!z~^qsL+0o7$I_p(gtR^w@nta;uI3+qZ&uXHA-Zd|vU~)=d_j zyYf44p{|yPMA#lvFJB&|#kW5r6ZnB1YrO2*bP2?(uJXOf$G9IoAKFryFa69sw5g!a zuCybKh(S0{=_rr(I;0`4P;=9xt9O{jtgJrQVtcp#*CPjH&o8wF3ukwi zhZ@Y8wAnB;&DmqF_`VL)M;Ye~yd@8Orkc-2S(-;^cYM0Dr#!QCdgk;$3(qHG%a)Y! z!zHu_D!2BBv5AL{w!S~>;w(S8$G1-=Pf1~m*Ylo6R_~Uc_U64}iHkZI_YNeO&1+iv zl&&e49#wxhG1`i|vo=c)&sFPMAhG^gE_F{r_T_?zEhndGy98kA#b+9-S2R3m++DdQ zMSZSRz^6;^qYfYW)hI>=TH4BAq;9`7TqA$secy>G@=A`8FS|n|?Gu`M`&n(re8un$ z??`LxTRV2Eko*UJuF_G`nW#3}}jA0QviVoNyfSVlA{ zaSC5tbz*K;c3-%eEBc0<=JEdUdWGlwjXRq=Goj7Le8GvHo?hpJLB=ivhmPj)6{fXC zyw7V=X^(4I@UHsG8z~2>G&hJYc8QQ)uKLFzuLD`co*f^LYgz*KQQoTNFI$5VXV0o(UoBcaYr*|xzVjq!Cj zeDduO<-B{#VR)+~ZZ*sE4g+uQ# zpB-_-AbxeIRb{sH&3a7zeyjb`%*pJIkOK>nJf>^in&*}dc~L20Z}%G?Xv3jL%%_FF z_cBttu^Wm^%3O~{kMHe;j%(RA;S0ALXWO(HYaV`aD4C>X%(=a0sf@kTw1MAeiti0| zUi;qt@zJ8TBU7Lw7;xJL+R|QiE!VE{)I5IKc7E&0@JrM0?oLP?kf?3he(xmO%Ru~O zjAHcSq#X?x3ixIhE>;zUv26GCZ#CF*>&HwxIc44h-QfsPio|7^*~gtYkuyv zJTUxuVPxztOG_T!*nA;ReE+HIS{F;48Y5#}wAbXJf56fzBpsyhzh+dBIg$@yCZ@#SY#a_qU0TQDZmbJ@G2PXkIz z*4;gC2bCPnZmZ5-e&qEzBlNWXhJA!z6ACw6^D=b|z&>@ovWJRH>`O#rU#Z;GFLTD6 zZt8W;BI{3TJUacddBwIXPp0*S0$$=9cS^`Gl`J3CnMZq-ekxLVnv^7e&*`Vu+?}jk zQu71or2S{e-NYUGslK#jjotS-g4|sEuvaEtf0jzYHsGaB^tqVGlbvW7y1Ihwq|@Fvj_qwJqfQ1puR#$9sCh;3@@1@D?Kj!H)1}TX6Je(v+>jsK7xWBw-@M0t5JBYM8ZtuU{&VrOg<9WUq?E-&)^R z+9A@5?uN7%h#({hZH{7N&B;iz1sX>plZoURNIVut!e9v)0v3fQP>EP75s&Qu(WfZ` z$x6iGQr#V#`nv=FvesWAkqD_6OlW8*I+TDGhQ9uJF4(CglVJN=X zpwG#G9|uUx7V(4(`em{N!4hkIeQ8I7KmFqh6b^R87x%LR6ft2;AqI!WV!mNS zr~kECVBl9R#S+I5a3}pE`)Y?`Mz|2dxIZ>fo=9U)9-ku!6`NRLhMNop z&X70AfhmD#Ah0PYECq!pGH~Wp5ZfdR6qZQEVqs4DG>7@1gGIz)N|-}la99+U#K4iL zBr=uonU~LWhx-w5c--*s@-n3Pxeq#>>cSUGn0z+m;y?pqNAq|bDv?aWk%?R~iiv|* zC_IbEMOj#INhpdr!JJ4T;h01&yLXVEn}6ZjLBI}{#sP5Mmq9oJHgG=}R#eD>%Y-Nv z7AQ7_LqXwi5Cz4uz?!2d1akt1MIdq6B;r6vFlS$MG*83>362>6(~*va13F{lARNTx z;!sS`6Uu^1B!e!vY?K8aG_xrLE*Bc?;wx^x=*pQV2GJA_i!u;vy(w$~6!dxPz=Z%_ zZz>WpMPf+0!mafOmiS=q8ca=6o8C-8WwND7jK-FRFT}CJeAYU2TZ5MUX1p(_^ZO9= z`G=W*yN}Qn5dW{jzt2^#*0-IA1zbreQv})if(ZHA%7iV-K8K%M4EJn>k>>jV-v3|@ z#LSStHv<+}yg7xypl?Q1BsOh3R6fVrm+S55J&{_C6X%=1R{BXOkW5i zuNv!-+| z?U=rww+>tYN42j%6=1R1ObQ1gqOfEV_~H=3Qvni%f+7$}cr2O1WsxknUr&{Nt)KS@ zAI@LhuN8+)JtFIM2 zMFtPBF@sOAzX-g(9Q6->4~^&_b_{nX?*vXmrYy%L6A@fNjtfphrYy%L6A@fNjtfph zrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L z6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fN zjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfph zrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphrYy%L6A@fNjtfphru>(< zl!x941M$I&U_!wgUov>z`@!2{kZfmnIsy@4h(N4~K_GfQfxpcNL@*YCXjzUxPgVU@Ptww| zjf}LM_M_74w!0Tx%~cjIclYx8dBcWr?_bsWylL9*gWP`g?iFsf^4x;L!p`motL@R- z_mq@OR!fLcTpwqO%|CEJ5fSyi^U^~hntRKGYah@|Lrh3K2^%F7UwX~ErI4Km?tc#5u zB|NpnBYgGZtVg0#Zl-uoz5`TP#vwHJ$dqc50BAt zb|XrcB~K>vv8GeCwUswJ$JW;`SwYk$lF9b@47)wm%Y%X@Xm1#unwsjhc(J`efN5!M z&8}XtDLq{UDBry4=F~oI`t&`A4vjZ7G~9Hx3G{g~q+Q$8%uH|V6*mu$`19xOo-{S- zO`kpnyimuPPA~uX;oXP(L3E>^PM!02d`q3ysw`UExq7U(Yyl^yqwd z_q70AX3*kG8+Bsl8rcU0;gnTWfK%c7H=PX$Ew}R*WX-YCz425n!zz5sk+Z-{QBzM8 z4efJQb$$8TxH!dYRaNJ>N10siXt7v)=l=cp27W?~UwKQ5Xg=ZH_J*44OVzxDLhR$W`#i?}v``!EN`@@IJC)$jRUencm=Z;rOO3K5Ymro~6p1eoVKQBwPx3Y3}UFVgm zs@xgrsi{rdiVq*&j2GD3D?pP)r!tN#q0_7GjacaFs`mKpv(anSOm&mT9KD=gqrx`?mV%F=I@UJGX7qY?JIxKe=}8$cjroV7UZZ z@_4))m96NS+S)Q5w}z6?Z-s|d(HYiqlB^X7PiLzj&*E;J&IjHJOT z1Mk$t-mg=_vf%`)!EuBgtWOM(mN+in1D^MI@W%sAj~XvcHJ2T1qHrk&*X%HqN3yzy1K~; z;1)8omDSYZ?XuTYabs+d!j)6i)nn`Gy!RIsJ#M^^5Z3d;&_RC!?_OeJ;*Om=%R?Wm zOnCJwn6Yr7p0V-eSCLUsRv>_z`879hu4!)%bcc345ASZjmvH^MYn?C3#6)S*{*)AT zrxKP(bfh+F?*0m$=$1E~kCTGqPM)MxM$Dc)ds0oK(n1brT17>L@ac7(;togs348PM zs_)-d%Xa&@rzgC=G;%w_(b;({m`kus#(-AK(B}`6XMVJ?vs=6P?5y4*-jvZ5X&sPr*4@aBKnBf3M z2w6%l9V>fz!rv{?K|hn~%yry3bM>yE@Eawk=WIta`Fyp;#zy|)k1t-}ot&JI>dF(Q zPEEdcZSMa4`yaLzm4!4bEk`o>Tdzz?*4UY{(i7w6?CUlSIgz9FyOwlyg*4k&aW7O< zj0S0I>9X$BRH^QSD5sep-x$z7bS)_EC@3g6bo{u+c*d+`-Q1}A6%|g!XF$SD2?yR3 zelLnTAok39^szWitYnY`y+HJ(1;KUi-PPWANh`Qd=a`n`LNh$ND2 z-mUEH>=B|ZsyboxC59{y_L|L9jzI*=2c)w2{ zKjZ{&vhEl&HOj`qTuV!9M60J|<1^Js1wa2hHnVwk@SMC`(|2TaaF1#=G&GD_zvgw(X zq^vEjW{&wU|tA|fM|N?4ALiXY!~lEJH~~wPao&J zJp;P5RMXg6Xt=i;Su#>1`O==YJ5QcW)6~?A8tIDOZeVJv0Ii!x0gn~J z2Df{K&^}DXk`HRoafBH0y;2R~{L@i#7-ae;U z_0_TXi!7Yx#EC(#+ZLU#xe9 z9@4drh`llMQ^s!2S!J6FGEtDT+Ql6BbaSIfb^a=N5MX}q@T=%kGs zf6OSZJ-Afma*xYI7n=~J=RYtcn~%-C1vWOHsSL@)%A$~1w5leerKP3*yyd>E7mSpc zn3&Eh(=&hN9@R54s%S4J_+DQQ)>><8tCx>YLOCm_eHX~wl$CFZ2bY{$yKbGbgQH_M zSWtz9h0;d7>wc?N>EhFpgz8{<^sJ;muJU!z>3cs;^+qOU7 zbh2llP_}!jPd4;eY>3ZX{V|Q$6^C}dp>)VM6U+d=;k2V=H1}xQ%^y~0z1Tae)Nd)^ zP_~EvU=kxZI5_DV*C$(9S=kQ6{kCn}>NhUQtF^*leqbHG1NEeA-_DMTngUjVK5}%At4Y6+2lmqA$B(<^GfqalG6kfybjZ7?yJxypJ0@;v zD6hD9F|5kR+xu;Zt%i;c{g)fJcE8Xt%?k$Z5}KQNmFpLR)N%YcX)c{U0udh{zeF>` zJ^$kU(nzJwhadqxYi~Dve_}DN1p$_o@uhnc_nm2X-=(t2W$c!+jejhSS$Cmvyhp*^ z0HfG*%A-bRW{Y%VK+fHfkr4}mp#C5T6?JuWn?2Q82M=y^KfGb%#`xK}=RriA{qTCR z_fl3~wjZCrS4ZHJwVSZ<*+J&B%AQB2;el?sxw+xva*{V}c%@q4hKmf`~Q#2vZnK}dZJ10w$g)JOCR$;Po2TcPTz4fE<0fE>nIj+qZ9QU|`_MmG8{EBCMs=c|!x;bac!J9UYy0`T4dyp2@Ty6K{+V z0%RbGg9}TSE=6linq=eWXL>GoH^`W^txW8so3*u17t}|Bf*l+?s%vT#W6mMAUU|~( zqjhH6%xB}rj!ODev_|8#k5B)h3U-!>7GEfSHXF{m(OnL&&-`zT9d3|Sg8Lt~l2AiHF&DG`b+Eo2*veJe6$ zi7d$$MH1PSy=>3ux4ggSx&F`pdEWPW=elNm&*$9d{w(J{-*a8(h&4Agls8}I3ZClY`MjA$pKua5?Z9_b$`czFIzOCbGOCVIi-{L!9r3bOJCDg6dwF@NJc zeZAd(JI7+=aPBw{9KnY~$141d^}I&(A(E~U{~PMRyZ@5|dTC8e{`T=NWAX6#+Xcx- z-;bWgp9T4sXp&`sCr-`+M=iu@xa3$z}g3<+pMf;%tM=%xxcP4s!py}!2J5pq;krb3qBq?! zJv!Jw?Fe06b8n(E-ksh-vM|&EBJ_2Y6;zd#Ay8R`-{G2=z!3zJ51N3%A@npr^wP-U z@mRRLA`W*BqjC;{!zjZbxO0k15ETU&4gynja>hC|f*ch#21k0UV6~V=Z8b z7&^!Q2~WuxgGHZHafT?XDmy`7s)`B_RYi<5ozh7ehE-NUE1X0B#b)M>r!Pme`#)I^ zqQcS{6=CwKN{aIG5SX$86oSPnDngua&gURbFhz`tG7JM#byhtP{cjz?jqoJ;3a4;2@MeDKnpl}K7W|;|DqoME6;z9zkUrzC;c}n`NIu~=Jde)s+3^mU^}~LfVUmP6B1r;Ko|GsNa3Lv0LQn=_P@W_qgGdsf+r{5>7$r#v3ce8#$4Cfb z;uTtJGqt9E{+xhUsAc;#ejEzPE*)A|Q3p48Z2Fdvx+md7bq?Qr;S%&6^ee+TMh0$v z1_s(82J&Hs8&rma7LdNt{@Fq^{?!7oGccgf=MHyi(EAE1bo**^qH;Dr9@R$Og_f=n z6_Nt$&fK5^^#?zsrGzF9Ixleo!A7^oEB)(QUNF)}czGQ`-zE|195TZ9*FMVLY1nHZ zLd3x0v)r4a-2BNYDP_mfQYvA0sn`>fcqVOBuVQv+V!O6BT1mpUkL3pSkzlp#1ABZk zxO1uqU79L4bd8k`;;_G9^tJHSxPRkKYU4XDI!q*ugY|f7;+mQVBY++GWfFSKYh7rw z(pxYG!hmiz=3suX{?T0r#VK^v_#p%Brv8W1c!FT;NA|Pe57vewhq?K|9nE~qE7xyO zqa0m)h43e|QB;95>D)#x+Gs={?{7rw;%VkDPOYTJWaf2P@EuU5)t45AqgB#SVS)C?vnEqyBG11~qQwdHa zFOy!K=$yUNEea6)y@>Ik_cZXl+9ET69gYMD>{bZ_Dm7fnYz8?;*tn4|K3rPi>(WQ| z8oCz0jeRA}fF4LMugDbV3SCXMl_TO|+9>R`Yt?INTU}PamM=MWrAFltMmV{VyTkpo z6AhOPn>0pS!EUxKKcgzefRvN(KHUV{Nv>`eZgi-P9HsMb_1-*dAiTSgsT_%u$jswp zL=QxCZ45}KQUm)#6{I&#_hsFnN_R){ODasBt^9oT;XGAF)%B&3P?Ber$#mXR z8|10QBY>j%g-Td1vJ+uA^aDwVD}xz~@N**%*Nr~|+8vqC`Iw^07ch%=)JE}PlzGs; zRotxAc4?117|~X@NL&(LeG}{P@PiqBpv*$H5@8XEY0jlObb2U&ikN^DW6ziGWQLDK z5BZ>$*nim2LwXrx2p#_RJ$AdV9ALebO7lsXz@;e}V7O>JH1@3>DyX z?DNKfU_g&%LaF6rZ z#E{RW8Kk(&t&)p*T4LbuoktTQ{8e;9M5P=Qk_hkfxcRpx(!Tj-j{$r~1b(Nw_Y!tN z8!);<4qUyRSMD@qo^+#$2E=)M}5isIW#NvjFR$UP~+E0+RcrjfZ%9` zxB4ZMivToNXQZb4vvD!7k<7F!Iv`8iK1@0jDpO;a$w(_ypO-LUIr&HmJHKFxO|9~* zUQY^*p*~V|U_JTZGF^1f%)c?_TE)jDzq4O6Bp>cvu3}dj6)?#kQ#)pJ!||eBhVpId zRi18^P$lEV&f(104xA^9=NsbgQD*Z1>=GVU!`jAA6>IW2q&_)W<^)dn>)FD%++|CUFOyRw)s7Q%N!_;=FO=DP!IG=Ri^YCwSqY)TVajiarW?+zrb}nU9N)TY zxS{dGRTo;BXvTZ1I|Y+5AfuaIsd>ofuWQ);=CIwAy zq_Mk^5wgN>qTYCO6W7|8WS^kcrE(rs@SG*o?3(At(wUH@9y?ou79K*pAerwrB=$|= zW7j<00DDF}XTC~a;*SXG%}&=06=2SQPTDjd4>}T?*T+r}E`7JVTzaE2KIcNbBzfwg zhO{ZSY4Pe1t; zYyk|Q$dzZ|7N3JujvF1r;1Nq5!C`3SuK57l+{~QGjd`Iy9aPmA0ha3dt_*>- z(m1keDOY~Re&~Q$-7X^@0u((HM)E+iywfh1B_wXF)Kn{_rB#-QQGR&=nQR1uGGkig zGLyz!6i1;+Ty!hdWcE}){xyR3xGp2H(s^EawS?5R(_wq~+H8i4cv{RnJFQT&6uJd! z*M!pSwgTg+Nk<*;<`COKf_rcEY|ro@m6}*`$9|sP0zLQ|`nq4M`(h!B8gP!EbT9DH z=VW`W^T%e(+Dd|+?YtDyLk&z^VJRPp6i7NVrGCYrkB^+9b&fX-YHB=ko1=Wf_eAKlNky8Xu@P@LPBK^BuQ*vG; zZ9raS#r3a;J_%W1rFA3}=;4&C!qWx<8<5_%eIk6#wab>w&-dKD`Q@+e@3m9R5>z;A@ zY>Ego3UrcGJK^NLngqjj|*Ks$;s8m8OUEQvh}s!-b?$Pd#x!LboTM~ z3L`qVt>-n1Dcj{AzDXsc)_KymTnkFEAv`Tr_OsZkE;MHql2)HMd?P-jqsvyU^TF{J zlvj&N%$kwT?g}T(IAXwfUT-`qj!6yE5yWB!kuG7CzEg7agJ_rps5lDRQ-$P1ub);v z>y+6Yd`bWKi)NF~R0KjJeDrjR_VgKm%wAECyH0r^_k^fVfl55Xr4+X!F~l}g_51sJ z&Ni6<8PV&!Cz%zz%e1sDJ#NYLXEi8E>mZ!&3jt)tSUy@RtMnj7PEwchEPLd_8grB= z^35-#z_bJqC9tO?o+c`?2e=gA*4A{Wa(umg(It7Q`&I{=+wC}p=HngOkKoJYrJ3y= z%UAc#?n@C^#D`WPG`7wvJ@{5UEm&H!Xe}YV&?4>b_##*cq~+;y{M_0zKbo;v;U}Z| z)Ye(14Kmr0+M-|U|ri3;g6vt?NTYRJvf4t2}DqG`Q< z3M$-b*xi1X+`W;E%=K-<2yN<9MgjDJ+j{Wwo)D&;7ZaKQo9_88~Rl} zs&ubkGu^!mR$(oDQ{{5lqR4usz$sY&gdEvw*F4HAVSTi8C2`w8|4`%RhOg=n$31&# zE*}9ClmljkS4wogovJ{#T4WAs?Pd$+95#rZ7qCtw&R=akWtPgj$&_1F5HfMm?L{=a zZOe7|yX6V8=q)jsb}-T##qQ#+!j0$`Ewftf_yB@* z=vq_awn}jj&)mC6>c=yAw`_vV9`;=L#d{>hxgzstdV62}lK&@yx~GUJ2wcNqxNw)G zWc#%{Wr^AObF|3dx1N{BLL;ajHNBktT0_abmcSX?P6FTKQ`T0@`UJc0PQ~!%i5j^r(~6lzVhMm?VlGPRWcmfB_;%+o+c(8t64&S~T+Z&bzuipy^cec65s2OkRfC@7_Hkgne zGe_l%S^i*|9fzv7N}LOjPO7x?xVX7wGuZEFI_fR;*#YoOZ62+S8Xnd zK2S*Qz=lv$9^_^M05D z+$ch~XZ$c|DKIN&3dqnw6~E}X$ihGPDvm?%lq2Kq%tTAb_G|=)*380>9b5my=&Dqf zb69--$;8D?^*3`-g_~kdnh?`=)=A3842#Lt3*W5B10$^iy`>RvDg5^bQsO$Kk;Y#f zScg6?{`f`TT-RJsM-vC0l-FB&+4v6YPuJZD@#tu#ZMY&}StZL{H0hp-m$x3b!9+c4 z)ZY{~u$0H8kQU=3+(I+H!>=rol}=JugM0iRiEK&~X}L-iaUrf8SC(~aZ&o_B=F=s| zjSL87Sx}dQieMj3X?Azy4@=m!kt4+>%TIcf+%poqR@l%fXTClzFocR+#fV~k>zS+mSN`oLLXlT~! z_R5{5%{TX6(!9O)rqIztucp5-M=H65<&~65EpxvwuUpnlUFJ$X4WC+CpmhR@f|;+2 z-=KO6YL_I~5zqDvSC~_*w!VPocI^jT#-y&N3-*Y7)iq#h_jTuHU+k=qy-BtE+Il@P z-t+WSHKOkQMgJw>5L8f|Rk%m_cAR@j3_bvz_L5fr?Q?yC>Ws`~fK1m5avfIObGKzq zP={?J(CS$*$>-BzTq>r~_O(kj3&urOl_Nv7ZT+-SrD`A(d*?vn#$p!NE`8m!-finv zNPqLFZf0u$E5LKu{;0HC#fQbu^`+GTA}&10K(pGii!5D2ZR?uRG3nExE2F(dH&_~Lig9{;q z?wYUAynO{ae)5NfF`#qrPh(C;G&gkqSn%d%#Fa%&&CRbTO3T)M1AW*WxWwCEWsN8&0g8rnzRD zcxOAGUXN_?JG9R)Gk(`h83w*j3$$91S>Yn5Om8Hc#13tmb2^64AGfHm@TwAeocEe& zI@KquYWKB5FZ*hv%9q;4FtO}DiuG17YPEE^WKgIkW$Tk6K<1M#rQZcrQuEbLTiXUJ z?5pt}zaj5*uNjI!(ro9q@b~MfvZ|uY8i2Dx=(@L{z6B1Myb4aZcU|x19XR>YFG2Pa z5M{;(sf{Y?w>$Q>hRzsbuNtf{@1+g^ob-TrImLg0H-A|zTu-o*U90^l{JJ;$yuF#4 zDDx*kzM`4dzt z!cRWhx1o3M+<0yn+aO)iG+3;7Sv`unkx~?uufn5RQSp~reyKn=;6}p@@ zw*I@k!k)lS!RS>|tzm0VEt5OZNa0b41i)Te+ zj=$+Dle5@Kq0g2ccPf+Zo4VaXgHr<2ox&n7q?QcQ?RP(q4e6rPY#-pJPE%l9S-&`O zo?~{0;`NUWiZ6v|kOv-rxe+PNUZlH7G)#(%ae?pj3CC~2jfN4o$yE(s!9`lH;Po-j zL$zJ5|N2al0xyN#rjPM%yYb=;HMF5WbcH4c-!A{4Fbz5~FS*$iN|UZ=2$g=no^g~b z>#NYr_ioLx+I0KO>AfK{l*oov>4$QuSHDEOsjalnTXJrTx?qDedY?5)?E=S)N!p;- zqb|mkD6aieOJ^Mdns-Y}sc?ziPguhb8Tj3i-6W-yGD=8Si8K9dHy>b`E8+^Kn3%|B zO+Qb4zcd6^*4gi@h^Z(-FKN-{%)LS99v$prvT3MJ=>N}6Zv98q? z-h1(AV3?xX@ZB!2yHTT@a?(4@T$)xWkbQqfeN_7Rg|(+GjBAa~nY+a;6K%PEJgpPLaZ!905jh%SeW*M=xsv4rkW%hWWiPcVnM~o&^{sreiIF%sLz$0Z zL5Gi~rS?RqV-%8KF3hRz@}R>{;X{hecUgJwrX>12XgoM#GA*$4t}mo4hnQ+3E%t(t zJp6iZmcBoI&7j<|P0kG0!zy*@sL^f?&dNv?3$HqdAoP%}-Gtfe0QN&Iu7W~MQIw9( zILm$jyKt*yh^x1!5WMHrMm+%Y~)|ni~I=Wa+`Xk@AQI=kk>>%iFbLm z<yw;e4l44slP??+<8<96>YMRo~h(Mj`de z#liWiE)tw))Qi&P9Pu*b!|SHuu;lRkX+C+%7st1KX#i9Scs=kXh2l+P7~HK0rd+RfCuo0T_{rE-I+K|l&c z#ceX|Y^bxiNyj(M%b*PM|&<+yA5&YGJ)r=rm}QE(_sZ~c4=zITm>d^pzIK%d}s`7)v_ zKW4*4K?Hr?zy}d%%j+eGD79MPc(llf#=Q+5xnGzYOh2mE+Ato`QDdSNijG<_Kjtck zS?Dgl_`$6Sj6ZR3Jnx`d+-+3vrr&F1Zcf@5SsL~vb5;rg!83O&5&FN<99q~fW|ozf zT(?|!ypUs0zoV#da}<&gNm;Y#V{dT&s)N0kv{xOrj6nn~5X-WUa`UU;9_D;XWs*L| zJXQg#XsN|TC~tzd_S \ No newline at end of file diff --git a/Modix/ClientApp/src/assets/logo.png b/Modix/ClientApp/src/assets/logo.png deleted file mode 100644 index 9bad91dc7c2bd8e1104c6c1fd7ed3c3b82d160a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36183 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 gF2VnYyWooH@n)Qy|$5DP)0!Py_`O1Vp3= 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 diff --git a/Modix/ClientApp/src/components/Autocomplete.vue b/Modix/ClientApp/src/components/Autocomplete.vue deleted file mode 100644 index 4f67c264f..000000000 --- a/Modix/ClientApp/src/components/Autocomplete.vue +++ /dev/null @@ -1,178 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Commands/CommandMenu.vue b/Modix/ClientApp/src/components/Commands/CommandMenu.vue deleted file mode 100644 index ffb38c7ba..000000000 --- a/Modix/ClientApp/src/components/Commands/CommandMenu.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/components/Commands/CommandView.vue b/Modix/ClientApp/src/components/Commands/CommandView.vue deleted file mode 100644 index 09c708aa6..000000000 --- a/Modix/ClientApp/src/components/Commands/CommandView.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Commands/ModuleView.vue b/Modix/ClientApp/src/components/Commands/ModuleView.vue deleted file mode 100644 index d737e0b47..000000000 --- a/Modix/ClientApp/src/components/Commands/ModuleView.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/components/Commands/ParameterView.vue b/Modix/ClientApp/src/components/Commands/ParameterView.vue deleted file mode 100644 index 53eaa552f..000000000 --- a/Modix/ClientApp/src/components/Commands/ParameterView.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/components/Configuration/IndividualDesignation.vue b/Modix/ClientApp/src/components/Configuration/IndividualDesignation.vue deleted file mode 100644 index 9f7372cb3..000000000 --- a/Modix/ClientApp/src/components/Configuration/IndividualDesignation.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/components/ConfirmationModal.vue b/Modix/ClientApp/src/components/ConfirmationModal.vue deleted file mode 100644 index a548378c8..000000000 --- a/Modix/ClientApp/src/components/ConfirmationModal.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/ErrorView.vue b/Modix/ClientApp/src/components/ErrorView.vue deleted file mode 100644 index ddc531574..000000000 --- a/Modix/ClientApp/src/components/ErrorView.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/components/HeroHeader.vue b/Modix/ClientApp/src/components/HeroHeader.vue deleted file mode 100644 index a1c2bfd93..000000000 --- a/Modix/ClientApp/src/components/HeroHeader.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/LoadingSpinner.vue b/Modix/ClientApp/src/components/LoadingSpinner.vue deleted file mode 100644 index 8693b3da3..000000000 --- a/Modix/ClientApp/src/components/LoadingSpinner.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Logs/BatchDeleteContext.vue b/Modix/ClientApp/src/components/Logs/BatchDeleteContext.vue deleted file mode 100644 index ec5e06dbb..000000000 --- a/Modix/ClientApp/src/components/Logs/BatchDeleteContext.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Logs/DeletedMessages.vue b/Modix/ClientApp/src/components/Logs/DeletedMessages.vue deleted file mode 100644 index 894e96bf2..000000000 --- a/Modix/ClientApp/src/components/Logs/DeletedMessages.vue +++ /dev/null @@ -1,300 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Logs/InfractionTable.vue b/Modix/ClientApp/src/components/Logs/InfractionTable.vue deleted file mode 100644 index 25135a45a..000000000 --- a/Modix/ClientApp/src/components/Logs/InfractionTable.vue +++ /dev/null @@ -1,354 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Logs/Infractions.vue b/Modix/ClientApp/src/components/Logs/Infractions.vue deleted file mode 100644 index 488b23561..000000000 --- a/Modix/ClientApp/src/components/Logs/Infractions.vue +++ /dev/null @@ -1,384 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Logs/Tabs.vue b/Modix/ClientApp/src/components/Logs/Tabs.vue deleted file mode 100644 index bbed65f29..000000000 --- a/Modix/ClientApp/src/components/Logs/Tabs.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/MiniProfile.vue b/Modix/ClientApp/src/components/MiniProfile.vue deleted file mode 100644 index bd65ab6a1..000000000 --- a/Modix/ClientApp/src/components/MiniProfile.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/ModixComponent.vue b/Modix/ClientApp/src/components/ModixComponent.vue deleted file mode 100644 index 4dfd22900..000000000 --- a/Modix/ClientApp/src/components/ModixComponent.vue +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/Modix/ClientApp/src/components/NavBar.vue b/Modix/ClientApp/src/components/NavBar.vue deleted file mode 100644 index 5225482f5..000000000 --- a/Modix/ClientApp/src/components/NavBar.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/PieChart.vue b/Modix/ClientApp/src/components/PieChart.vue deleted file mode 100644 index 25a943047..000000000 --- a/Modix/ClientApp/src/components/PieChart.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/components/Promotions/PromotionCommentEditModal.vue b/Modix/ClientApp/src/components/Promotions/PromotionCommentEditModal.vue deleted file mode 100644 index 3b4c41d30..000000000 --- a/Modix/ClientApp/src/components/Promotions/PromotionCommentEditModal.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/components/Promotions/PromotionCommentView.vue b/Modix/ClientApp/src/components/Promotions/PromotionCommentView.vue deleted file mode 100644 index b6887178e..000000000 --- a/Modix/ClientApp/src/components/Promotions/PromotionCommentView.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Promotions/PromotionListItem.vue b/Modix/ClientApp/src/components/Promotions/PromotionListItem.vue deleted file mode 100644 index c6a320c94..000000000 --- a/Modix/ClientApp/src/components/Promotions/PromotionListItem.vue +++ /dev/null @@ -1,267 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/Tags/TagCreationModal.vue b/Modix/ClientApp/src/components/Tags/TagCreationModal.vue deleted file mode 100644 index 4551d4ecb..000000000 --- a/Modix/ClientApp/src/components/Tags/TagCreationModal.vue +++ /dev/null @@ -1,211 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/TinyUserView.vue b/Modix/ClientApp/src/components/TinyUserView.vue deleted file mode 100644 index 738a229dd..000000000 --- a/Modix/ClientApp/src/components/TinyUserView.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/components/TriStateCheckbox.vue b/Modix/ClientApp/src/components/TriStateCheckbox.vue deleted file mode 100644 index a30e834eb..000000000 --- a/Modix/ClientApp/src/components/TriStateCheckbox.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/components/UserLookup/UserProfile.vue b/Modix/ClientApp/src/components/UserLookup/UserProfile.vue deleted file mode 100644 index 428d641bc..000000000 --- a/Modix/ClientApp/src/components/UserLookup/UserProfile.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/components/UserLookup/UserProfileField.vue b/Modix/ClientApp/src/components/UserLookup/UserProfileField.vue deleted file mode 100644 index b3f1c7031..000000000 --- a/Modix/ClientApp/src/components/UserLookup/UserProfileField.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/components/UserLookup/UserSearch.vue b/Modix/ClientApp/src/components/UserLookup/UserSearch.vue deleted file mode 100644 index 9af8f73f2..000000000 --- a/Modix/ClientApp/src/components/UserLookup/UserSearch.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/data/loadingMessages.json b/Modix/ClientApp/src/data/loadingMessages.json deleted file mode 100644 index f6429b4ef..000000000 --- a/Modix/ClientApp/src/data/loadingMessages.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - "Wamming Patrick...", - "Waiting for Webpack to build...", - "Deleting node_modules...", - "Restarting IIS...", - "🎄 Merry Christmas! 🎄", - "Aggressively Inlining...", - "Converting to F#...", - "Combinating Parsers...", - "Constructing Additional Pylons...", - "Reticulating Splines...", - "Deleting Makeloft Comments...", - "Switching to Java...", - "Orienting Objects...", - "Reifying Generics...", - "Reflecting Over Codebase...", - "Marshalling Pointer to Structure...", - "Remember: Be Living Always Really Focused" -] diff --git a/Modix/ClientApp/src/main.ts b/Modix/ClientApp/src/main.ts deleted file mode 100644 index 8f8c300ca..000000000 --- a/Modix/ClientApp/src/main.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { vuexStore } from '@/app/Store'; -import Vue from 'vue'; -import App from './App.vue'; -import router from '@/router'; -import VueClipboards from 'vue-clipboards'; -import { ensureConfig } from './models/PersistentConfig'; - -const VTooltip = require('v-tooltip'); - -Vue.config.productionTip = false; -Vue.use(VueClipboards); -Vue.use(VTooltip); - -ensureConfig(); - -new Vue -({ - router, - store: vuexStore, - render: h => h(App) -}).$mount('#app'); \ No newline at end of file diff --git a/Modix/ClientApp/src/models/Channel.ts b/Modix/ClientApp/src/models/Channel.ts deleted file mode 100644 index db455e71c..000000000 --- a/Modix/ClientApp/src/models/Channel.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default interface Channel -{ - id: string; - name: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/Claim.ts b/Modix/ClientApp/src/models/Claim.ts deleted file mode 100644 index 4c24faa94..000000000 --- a/Modix/ClientApp/src/models/Claim.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default interface Claim -{ - name: string; - description: string; - category: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/ClaimMapping.ts b/Modix/ClientApp/src/models/ClaimMapping.ts deleted file mode 100644 index 125eee59e..000000000 --- a/Modix/ClientApp/src/models/ClaimMapping.ts +++ /dev/null @@ -1,38 +0,0 @@ -export enum ClaimMappingType -{ - Granted = "Granted", - Denied = "Denied" -} - -export const MappingTypeFromBoolean = (input: boolean | null): ClaimMappingType | null => -{ - switch (input) - { - case true: - return ClaimMappingType.Granted; - case false: - return ClaimMappingType.Denied; - default: - return null; - } -} - -export default class ClaimMapping -{ - id: number = 0; - type: ClaimMappingType = ClaimMappingType.Denied; - guildId: string = ""; - roleId: string | null = null; - userId: string | null = null; - claim: string = ""; - - get isRoleMapping(): boolean - { - return this.roleId != null; - } - - get isUserMapping(): boolean - { - return this.userId != null; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/EphemeralUser.ts b/Modix/ClientApp/src/models/EphemeralUser.ts deleted file mode 100644 index c6345bfe3..000000000 --- a/Modix/ClientApp/src/models/EphemeralUser.ts +++ /dev/null @@ -1,23 +0,0 @@ -import Role from './Role'; - -export default interface EphemeralUser -{ - id: string; - username: string; - nickname: string; - discriminator: string; - avatarUrl: string; - createdAt: Date; - joinedAt: Date; - firstSeen: Date; - lastSeen: Date; - rank: number; - last7DaysMessages: number; - last30DaysMessages: number; - averageMessagesPerDay: number; - percentile: number; - roles: Role[]; - isBanned: boolean; - banReason: string; - isGuildMember: boolean; -} diff --git a/Modix/ClientApp/src/models/FilterParameter.ts b/Modix/ClientApp/src/models/FilterParameter.ts deleted file mode 100644 index 8988a810a..000000000 --- a/Modix/ClientApp/src/models/FilterParameter.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default class FilterParameter -{ - field: string = ""; - value: string = ""; -} diff --git a/Modix/ClientApp/src/models/Guild.ts b/Modix/ClientApp/src/models/Guild.ts deleted file mode 100644 index 9ec005a34..000000000 --- a/Modix/ClientApp/src/models/Guild.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default interface Guild -{ - id: string; - name: string; - iconUrl: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/GuildStatApiData.ts b/Modix/ClientApp/src/models/GuildStatApiData.ts deleted file mode 100644 index e34b6cc95..000000000 --- a/Modix/ClientApp/src/models/GuildStatApiData.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { PieChartItem } from '@/models/PieChart' - -export default interface GuildStatApiData -{ - guildName: string; - guildRoleCounts: GuildRoleCount[]; - topUserMessageCounts: PerUserMessageCount[]; -} - -export interface GuildRoleCount extends PieChartItem -{ -} - -export interface PerUserMessageCount -{ - username: string; - discriminator: string; - rank: number; - messageCount: number; - isCurrentUser: boolean; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/ModixState.ts b/Modix/ClientApp/src/models/ModixState.ts deleted file mode 100644 index 51f06aaf4..000000000 --- a/Modix/ClientApp/src/models/ModixState.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { ModuleHelpData } from "@/models/ModuleHelpData"; -import PromotionCampaign from "@/models/promotions/PromotionCampaign"; -import User from "@/models/User"; -import DesignatedChannelMapping from '@/models/moderation/DesignatedChannelMapping'; -import Role from '@/models/Role'; -import Claim from '@/models/Claim'; -import Guild from '@/models/Guild'; -import DesignatedRoleMapping from '@/models/moderation/DesignatedRoleMapping'; -import Channel from '@/models/Channel'; - -export default interface ModixState -{ - user: User | null; - errors: string[]; - commands: ModuleHelpData[]; - campaigns: PromotionCampaign[]; - - channelDesignations: DesignatedChannelMapping[]; - channelDesignationTypes: string[]; - - roleMappings: DesignatedRoleMapping[]; - roleDesignationTypes: string[]; - - claims: {[claim: string]: Claim[]}; - - roles: Role[]; - guilds: Guild[]; - channels: { [key: string]: Channel; }; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/ModuleHelpData.ts b/Modix/ClientApp/src/models/ModuleHelpData.ts deleted file mode 100644 index 4c3467bad..000000000 --- a/Modix/ClientApp/src/models/ModuleHelpData.ts +++ /dev/null @@ -1,24 +0,0 @@ -export interface ModuleHelpData -{ - name: string; - summary: string; - commands: CommandHelpData[]; -} - -export interface CommandHelpData -{ - aliases: string[]; - name: string; - summary: string; - parameters: ParameterHelpData[]; - isSlashCommand: boolean; -} - -export interface ParameterHelpData -{ - name: string; - summary: string; - type: string; - isOptional: boolean; - options: string[]; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/PersistentConfig.ts b/Modix/ClientApp/src/models/PersistentConfig.ts deleted file mode 100644 index 3e054fb42..000000000 --- a/Modix/ClientApp/src/models/PersistentConfig.ts +++ /dev/null @@ -1,55 +0,0 @@ -import PersistentKeyValueService from "@/services/PersistentKeyValueService"; - -export enum Theme -{ - Default = "Default", - Spoopy = "Spoopy", - Holiday = "Holiday" -} - -export interface PersistentConfig -{ - showInactiveCampaigns: boolean; - showInfractionState: boolean; - showDeletedInfractions: boolean; - theme: Theme; -} - -const defaultConfig: PersistentConfig = -{ - showInactiveCampaigns: false, - showInfractionState: false, - showDeletedInfractions: false, - theme: Theme.Default -}; - -export const config = (): PersistentConfig => PersistentKeyValueService.get("persistentConfig") || defaultConfig; -export const setConfig = (setter: (conf: PersistentConfig) => void) => -{ - let instance = config(); - - setter(instance); - PersistentKeyValueService.set("persistentConfig", instance); -}; -export const ensureConfig = () => -{ - let config = PersistentKeyValueService.get("persistentConfig"); - - if (config == null) - { - PersistentKeyValueService.set("persistentConfig", defaultConfig); - return; - } - - for (let key of Object.getOwnPropertyNames(defaultConfig)) - { - if (config.hasOwnProperty(key) == false) - { - PersistentKeyValueService.set("persistentConfig", defaultConfig); - return; - } - } - -} - -export const themeContext = (require).context('@/styles/themes/', true, /^.*\.scss$/); \ No newline at end of file diff --git a/Modix/ClientApp/src/models/PieChart.ts b/Modix/ClientApp/src/models/PieChart.ts deleted file mode 100644 index b29946642..000000000 --- a/Modix/ClientApp/src/models/PieChart.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface PieChartItem -{ - name: string; - count: number; - color: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/RecordsPage.ts b/Modix/ClientApp/src/models/RecordsPage.ts deleted file mode 100644 index c1055a08d..000000000 --- a/Modix/ClientApp/src/models/RecordsPage.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default class RecordsPage -{ - totalRecordCount: number = 0; - filteredRecordCount: number = 0; - records: T[] = []; -} diff --git a/Modix/ClientApp/src/models/Role.ts b/Modix/ClientApp/src/models/Role.ts deleted file mode 100644 index efc45b64a..000000000 --- a/Modix/ClientApp/src/models/Role.ts +++ /dev/null @@ -1,26 +0,0 @@ -let tinycolor = require("tinycolor2"); - -export default class Role -{ - id: string = ""; - name: string = ""; - - fgColor: string = ""; - //bgColor: string = ""; - - private _color: string = ""; - get color(): string - { - return this._color; - } - - set color(val: string) - { - this._color = val; - let parsedColor = tinycolor(this.color); - - let determinedColor = parsedColor.darken((21 - tinycolor.readability(parsedColor, "#fff")) * 1.33); - - this.fgColor = determinedColor.toHexString(); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/RootState.ts b/Modix/ClientApp/src/models/RootState.ts deleted file mode 100644 index 388608184..000000000 --- a/Modix/ClientApp/src/models/RootState.ts +++ /dev/null @@ -1,6 +0,0 @@ -import ModixState from "@/models/ModixState"; - -export default interface RootState -{ - modix: ModixState; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/SortDirection.ts b/Modix/ClientApp/src/models/SortDirection.ts deleted file mode 100644 index f07305bc4..000000000 --- a/Modix/ClientApp/src/models/SortDirection.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum SortDirection -{ - Ascending = "Ascending", - Descending = "Descending" -} diff --git a/Modix/ClientApp/src/models/SortParameter.ts b/Modix/ClientApp/src/models/SortParameter.ts deleted file mode 100644 index 43849f634..000000000 --- a/Modix/ClientApp/src/models/SortParameter.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SortDirection } from './SortDirection'; - -export default class SortParameter -{ - field: string = ""; - direction: SortDirection = SortDirection.Descending; -} diff --git a/Modix/ClientApp/src/models/TableParameters.ts b/Modix/ClientApp/src/models/TableParameters.ts deleted file mode 100644 index b308a697c..000000000 --- a/Modix/ClientApp/src/models/TableParameters.ts +++ /dev/null @@ -1,10 +0,0 @@ -import SortParameter from './SortParameter'; -import FilterParameter from './FilterParameter'; - -export default class TableParameters -{ - page: number = 0; - perPage: number = 10; - sort: SortParameter = new SortParameter(); - filters: FilterParameter[] = []; -} diff --git a/Modix/ClientApp/src/models/Tags/TagAction.ts b/Modix/ClientApp/src/models/Tags/TagAction.ts deleted file mode 100644 index c213d0b2f..000000000 --- a/Modix/ClientApp/src/models/Tags/TagAction.ts +++ /dev/null @@ -1,7 +0,0 @@ -import GuildUserIdentity from '@/models/core/GuildUserIdentity'; - -export default interface TagAction -{ - created: string; - createdBy: GuildUserIdentity; -} diff --git a/Modix/ClientApp/src/models/Tags/TagCreationData.ts b/Modix/ClientApp/src/models/Tags/TagCreationData.ts deleted file mode 100644 index cb13e114a..000000000 --- a/Modix/ClientApp/src/models/Tags/TagCreationData.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default class TagCreationData -{ - content: string = ""; -} diff --git a/Modix/ClientApp/src/models/Tags/TagMutationData.ts b/Modix/ClientApp/src/models/Tags/TagMutationData.ts deleted file mode 100644 index c12168192..000000000 --- a/Modix/ClientApp/src/models/Tags/TagMutationData.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default class TagMutationData -{ - content: string = ""; -} diff --git a/Modix/ClientApp/src/models/Tags/TagSummary.ts b/Modix/ClientApp/src/models/Tags/TagSummary.ts deleted file mode 100644 index ee0eb9f49..000000000 --- a/Modix/ClientApp/src/models/Tags/TagSummary.ts +++ /dev/null @@ -1,15 +0,0 @@ -import GuildUserIdentity from '../core/GuildUserIdentity'; -import Role from '../Role'; -import { GuildRoleBrief } from '../promotions/PromotionCampaign'; - -export default interface TagSummary -{ - content: string; - created: Date; - isOwnedByRole: boolean; - name: string; - ownerUser: GuildUserIdentity; - ownerRole: GuildRoleBrief; - uses: number; - canMaintain: boolean; -} diff --git a/Modix/ClientApp/src/models/User.ts b/Modix/ClientApp/src/models/User.ts deleted file mode 100644 index 42388334b..000000000 --- a/Modix/ClientApp/src/models/User.ts +++ /dev/null @@ -1,8 +0,0 @@ -export default class User -{ - name: string = ""; - userId: string = ""; - avatarHash: string = ""; - claims: string[] = []; - selectedGuild: string = ""; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/UserMessagePerChannelCount.ts b/Modix/ClientApp/src/models/UserMessagePerChannelCount.ts deleted file mode 100644 index dcfe30af3..000000000 --- a/Modix/ClientApp/src/models/UserMessagePerChannelCount.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PieChartItem } from '@/models/PieChart' - -export default interface UserMessagePerChannelCount extends PieChartItem -{ -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/configuration/RoleClaimModifyData.ts b/Modix/ClientApp/src/models/configuration/RoleClaimModifyData.ts deleted file mode 100644 index d6e6c01b0..000000000 --- a/Modix/ClientApp/src/models/configuration/RoleClaimModifyData.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ClaimMappingType } from '@/models/ClaimMapping'; - -export default interface RoleClaimModifyData -{ - claim: string; - mappingType: ClaimMappingType | null; - roleId: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/core/GuildUserIdentity.ts b/Modix/ClientApp/src/models/core/GuildUserIdentity.ts deleted file mode 100644 index 7a752178e..000000000 --- a/Modix/ClientApp/src/models/core/GuildUserIdentity.ts +++ /dev/null @@ -1,13 +0,0 @@ -export default interface GuildUserIdentity -{ - id: number; - guildId: string; - username: string; - discriminator: string; - nickname: string; -} - -export const getFullUsername = (user: GuildUserIdentity) => -{ - return `${user.username}#${user.discriminator}`; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/core/ModerationAction.ts b/Modix/ClientApp/src/models/core/ModerationAction.ts deleted file mode 100644 index 841864169..000000000 --- a/Modix/ClientApp/src/models/core/ModerationAction.ts +++ /dev/null @@ -1,8 +0,0 @@ -import GuildUserIdentity from '@/models/core/GuildUserIdentity'; - -export default interface ModerationAction -{ - id: number; - created: string; - createdBy: GuildUserIdentity; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/infractions/InfractionCreationData.ts b/Modix/ClientApp/src/models/infractions/InfractionCreationData.ts deleted file mode 100644 index abe441b4c..000000000 --- a/Modix/ClientApp/src/models/infractions/InfractionCreationData.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { InfractionType } from './InfractionType'; - -export default class InfractionCreationData -{ - type: InfractionType = InfractionType.Notice; - reason: string = ""; - durationMonths: number | null = null; - durationDays: number | null = null; - durationHours: number | null = null; - durationMinutes: number | null = null; - durationSeconds: number | null = null; -} diff --git a/Modix/ClientApp/src/models/infractions/InfractionSummary.ts b/Modix/ClientApp/src/models/infractions/InfractionSummary.ts deleted file mode 100644 index 45ff7a999..000000000 --- a/Modix/ClientApp/src/models/infractions/InfractionSummary.ts +++ /dev/null @@ -1,20 +0,0 @@ -import GuildUserIdentity from '@/models/core/GuildUserIdentity'; -import ModerationAction from '@/models/core/ModerationAction'; -import { InfractionType } from './InfractionType'; - -export default interface InfractionSummary -{ - id: number; - guildId: string; - type: InfractionType; - reason: string; - duration: string; - subject: GuildUserIdentity; - - createAction: ModerationAction; - rescindAction: ModerationAction; - deleteAction: ModerationAction; - - canRescind: boolean; - canDelete: boolean; -} diff --git a/Modix/ClientApp/src/models/infractions/InfractionType.ts b/Modix/ClientApp/src/models/infractions/InfractionType.ts deleted file mode 100644 index 2f4d4bb4d..000000000 --- a/Modix/ClientApp/src/models/infractions/InfractionType.ts +++ /dev/null @@ -1,24 +0,0 @@ -export enum InfractionType -{ - Notice = "Notice", - Warning = "Warning", - Mute = "Mute", - Ban = "Ban" -} - -export function infractionTypeToEmoji(type: InfractionType) -{ - switch (type) - { - case "Notice": - return "📝"; - case "Warning": - return "⚠"; - case "Mute": - return "🔇"; - case "Ban": - return "🔨"; - default: - return type; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/logs/DeletedMessage.ts b/Modix/ClientApp/src/models/logs/DeletedMessage.ts deleted file mode 100644 index 2b861b42a..000000000 --- a/Modix/ClientApp/src/models/logs/DeletedMessage.ts +++ /dev/null @@ -1,10 +0,0 @@ -export default class DeletedMessage -{ - channel: string = ""; - author: string = ""; - created: Date = new Date(); - createdBy: string = ""; - content: string = ""; - reason: string = ""; - batchId: number | null = null; -} diff --git a/Modix/ClientApp/src/models/logs/DeletedMessageAbstraction.ts b/Modix/ClientApp/src/models/logs/DeletedMessageAbstraction.ts deleted file mode 100644 index 3f7f63861..000000000 --- a/Modix/ClientApp/src/models/logs/DeletedMessageAbstraction.ts +++ /dev/null @@ -1,8 +0,0 @@ -export default interface DeletedMessageAbstraction -{ - messageId: number; - username: string; - sentTime: Date | null; - content: string; - url: string | null; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/moderation/DesignatedChannelCreationData.ts b/Modix/ClientApp/src/models/moderation/DesignatedChannelCreationData.ts deleted file mode 100644 index 2b4c75c71..000000000 --- a/Modix/ClientApp/src/models/moderation/DesignatedChannelCreationData.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default interface DesignatedChannelCreationData -{ - channelId: string; - channelDesignations: string[]; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/moderation/DesignatedChannelMapping.ts b/Modix/ClientApp/src/models/moderation/DesignatedChannelMapping.ts deleted file mode 100644 index 5e92d8bec..000000000 --- a/Modix/ClientApp/src/models/moderation/DesignatedChannelMapping.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default interface DesignatedChannelMapping -{ - id: string; - channelId: string; - channelDesignation: string; - name: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/moderation/DesignatedRoleCreationData.ts b/Modix/ClientApp/src/models/moderation/DesignatedRoleCreationData.ts deleted file mode 100644 index b0a34c789..000000000 --- a/Modix/ClientApp/src/models/moderation/DesignatedRoleCreationData.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default interface DesignatedRoleCreationData -{ - roleId: string; - roleDesignations: string[]; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/moderation/DesignatedRoleMapping.ts b/Modix/ClientApp/src/models/moderation/DesignatedRoleMapping.ts deleted file mode 100644 index 0d14c410f..000000000 --- a/Modix/ClientApp/src/models/moderation/DesignatedRoleMapping.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default interface DesignatedRoleMapping -{ - id: string; - roleId: string; - roleDesignation: string; - name: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/promotions/PromotionAction.ts b/Modix/ClientApp/src/models/promotions/PromotionAction.ts deleted file mode 100644 index 93332556b..000000000 --- a/Modix/ClientApp/src/models/promotions/PromotionAction.ts +++ /dev/null @@ -1,8 +0,0 @@ -import GuildUserIdentity from '@/models/core/GuildUserIdentity'; - -export interface PromotionAction -{ - id: number; - created: Date; - createdBy: GuildUserIdentity; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/promotions/PromotionCampaign.ts b/Modix/ClientApp/src/models/promotions/PromotionCampaign.ts deleted file mode 100644 index 46cd04c40..000000000 --- a/Modix/ClientApp/src/models/promotions/PromotionCampaign.ts +++ /dev/null @@ -1,84 +0,0 @@ -import _ from "lodash"; - -import PromotionComment from "@/models/promotions/PromotionComment"; -import PromotionService from '@/services/PromotionService'; -import GuildUserIdentity from '@/models/core/GuildUserIdentity'; -import { PromotionAction } from '@/models/promotions/PromotionAction'; - -export enum PromotionSentiment -{ - Approve = "Approve", - Oppose = "Oppose", - Abstain = "Abstain" -} - -export enum CampaignOutcome -{ - Accepted = "Accepted", - Rejected = "Rejected", - Failed = "Failed" -} - -export const SentimentIcons: {[sentiment in PromotionSentiment]: string} = -{ - "Approve": "👍", - "Oppose": "👎", - "Abstain": "😐" -} - -export const StatusIcons: {[sentiment in CampaignOutcome]: string} = -{ - "Accepted": "✔", - "Rejected": "❌", - "Failed": "❓" -} - -export default class PromotionCampaign -{ - id: number = 0; - guildId: string = ''; - subject?: GuildUserIdentity; - targetRole?: GuildRoleBrief; - createAction?: PromotionAction; - outcome: CampaignOutcome = CampaignOutcome.Failed; - closeAction?: PromotionAction; - abstainCount: number = 5; - approveCount: number = 6; - opposeCount: number = 7; - - get isActive(): boolean - { - return !this.outcome; - } - - get sentimentRatio(): number - { - if (this.approveCount > 0 || this.opposeCount > 0) - { - return this.approveCount / (this.approveCount + this.opposeCount); - } - - return 0; - } - - get startDate(): Date - { - return (this.createAction == null ? new Date(0) : this.createAction.created); - } -} - -export interface PromotionSubject -{ - id: string; - username: string; - discriminator: string; - nickname: null; - displayName: string; -} - -export interface GuildRoleBrief -{ - id: string; - name: string; - position: number; -} diff --git a/Modix/ClientApp/src/models/promotions/PromotionComment.ts b/Modix/ClientApp/src/models/promotions/PromotionComment.ts deleted file mode 100644 index 3bfaab246..000000000 --- a/Modix/ClientApp/src/models/promotions/PromotionComment.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { PromotionSentiment } from "@/models/promotions/PromotionCampaign"; -import { PromotionAction } from '@/models/promotions/PromotionAction'; - -export default interface PromotionComment -{ - id: number; - sentiment: PromotionSentiment; - content: string; - createAction: PromotionAction; - isModified: boolean; - isFromCurrentUser: boolean; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/promotions/PromotionCommentData.ts b/Modix/ClientApp/src/models/promotions/PromotionCommentData.ts deleted file mode 100644 index 6bb4a6564..000000000 --- a/Modix/ClientApp/src/models/promotions/PromotionCommentData.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { PromotionSentiment } from "@/models/promotions/PromotionCampaign"; - -export default interface PromotionCommentData -{ - body: string; - sentiment: PromotionSentiment; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/models/promotions/PromotionCreationData.ts b/Modix/ClientApp/src/models/promotions/PromotionCreationData.ts deleted file mode 100644 index 5d600e14b..000000000 --- a/Modix/ClientApp/src/models/promotions/PromotionCreationData.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default interface PromotionCreationData -{ - userId: string; - comment: string; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/router.ts b/Modix/ClientApp/src/router.ts deleted file mode 100644 index 5261d5922..000000000 --- a/Modix/ClientApp/src/router.ts +++ /dev/null @@ -1,222 +0,0 @@ -import ModixRoute, { ModixRouteData, RedirectRouteData, RouteType } from '@/app/ModixRoute'; -import store from '@/app/Store'; -import { getCookie } from '@/app/Util'; -import _ from 'lodash'; -import Vue from 'vue'; -import Router from 'vue-router'; -import { toTitleCase } from './app/Util'; - -import Home from './views/Home.vue'; -const Commands = () => import('./views/Commands.vue').then(m => m.default); -const ChannelDesignations = () => import('./views/Configuration/ChannelDesignations.vue').then(m => m.default) -const Claims = () => import('./views/Configuration/Claims.vue').then(m => m.default) -const Configuration = () => import('./views/Configuration/Configuration.vue').then(m => m.default) -const RoleDesignations = () => import('./views/Configuration/RoleDesignations.vue').then(m => m.default) -const CreatePromotion = () => import('./views/CreatePromotion.vue').then(m => m.default) -const Infractions = () => import('./components/Logs/Infractions.vue').then(m => m.default) -const Promotions = () => import('./views/Promotions.vue').then(m => m.default) -const Stats = () => import('./views/Stats.vue').then(m => m.default) -const Tags = () => import('./views/Tags/Tags.vue').then(m => m.default) -const Logs = () => import('./views/Logs.vue').then(m => m.default) -const DeletedMessages = () => import('./components/Logs/DeletedMessages.vue').then(m => m.default) -const UserLookup = () => import('./views/UserLookup.vue').then(m => m.default) - -Vue.use(Router) - -let routes: (ModixRouteData | RedirectRouteData)[] = -[ - { - path: '/', - name: 'home', - component: Home, - showInNavbar: false, - type: RouteType.Normal - }, - { - path: '/stats', - name: 'stats', - component: Stats, - showInNavbar: true, - requiresAuth: true, - type: RouteType.Normal - }, - { - path: '/commands', - name: 'commands', - component: Commands, - showInNavbar: true, - type: RouteType.Normal - }, - { - path: '/userlookup', - name: 'userlookup', - title: 'User Lookup', - component: UserLookup, - showInNavbar: true, - requiresAuth: true, - type: RouteType.Normal, - }, - { - path: '/tags', - name: 'tags', - component: Tags, - showInNavbar: true, - requiresAuth: true, - type: RouteType.Normal - }, - { - path: '/promotions', - name: 'promotions', - component: Promotions, - showInNavbar: true, - requiredClaims: ["PromotionsRead"], - type: RouteType.Normal - }, - { - path: '/promotions/create', - name: 'createPromotion', - title: "Start a Campaign", - component: CreatePromotion, - showInNavbar: false, - requiredClaims: ["PromotionsCreateCampaign"], - type: RouteType.Normal - }, - { - path: '/infractions', - redirectTo: 'infractions', - type: RouteType.Redirect - }, - { - path: '/logs', - name: 'logs', - component: Logs, - showInNavbar: true, - requiresAuth: true, - type: RouteType.Normal, - children: - [ - { - path: 'deletedMessages', - name: 'deletedMessages', - title: 'Deletions', - component: DeletedMessages, - type: RouteType.Normal, - requiredClaims: ["LogViewDeletedMessages"] - }, - { - path: 'infractions', - name: 'infractions', - component: Infractions, - showInNavbar: true, - type: RouteType.Normal, - requiredClaims: ["ModerationRead"] - } - ] - }, - { - path: '/config', - name: 'config', - title: '🛠', - component: Configuration, - isButton: true, - showInNavbar: true, - requiresAuth: true, - type: RouteType.Normal, - children: - [ - { - path: 'roles', - name: 'roles', - component: RoleDesignations, - type: RouteType.Normal, - requiredClaims: ["DesignatedRoleMappingRead"] - }, - { - path: 'channels', - name: 'channels', - component: ChannelDesignations, - type: RouteType.Normal, - requiredClaims: ["DesignatedChannelMappingRead"] - }, - { - path: 'claims', - name: 'claims', - component: Claims, - type: RouteType.Normal, - requiredClaims: ["AuthorizationConfigure"] - } - ] - }, - { - path: '/error', - name: 'error', - showInNavbar: false, - type: RouteType.Normal, - beforeEnter: (to, from, next) => - { - let errorCookie = getCookie("Error"); - - if (errorCookie) - { - store.pushErrorMessage(errorCookie); - } - - next('/'); - } - } -]; - -const router = new Router -({ - mode: "history", - routes: _.map(routes, routeData => new ModixRoute(routeData).asVueRoute()) -}); - -router.beforeEach(async (to, from, next) => -{ - if (from.name == null && !store.hasTriedAuth()) - { - await store.retrieveUserInfo(); - if (store.isLoggedIn()) - { - await store.retrieveGuilds(); - } - } - - let toRoute: ModixRoute = to.meta; - - if (toRoute.requiresAuth && !store.isLoggedIn()) - { - store.pushErrorMessage(`You need to log in before accessing ${to.fullPath}`); - next('/'); - } - else if (to.matched.length == 0) - { - store.pushErrorMessage(`Page not found: ${to.fullPath}`); - next('/'); - } - else if (toRoute.requiredClaims && !store.userHasClaims(toRoute.requiredClaims)) - { - store.pushErrorMessage(`You are not authorized to view ${to.fullPath}. Required claims: ` + - toRoute.requiredClaims.join(', ')); - - next('/'); - } - else - { - next(); - } -}); - -router.afterEach((to, from) => -{ - let toRoute: ModixRoute = to.meta; - document.title = "Modix - " + toTitleCase(toRoute.title); -}); - -router.onError((err: Error) => -{ - store.pushErrorMessage(err.message); -}); - -export default router; diff --git a/Modix/ClientApp/src/services/ApiClient.ts b/Modix/ClientApp/src/services/ApiClient.ts deleted file mode 100644 index 7ea5ab93e..000000000 --- a/Modix/ClientApp/src/services/ApiClient.ts +++ /dev/null @@ -1,10 +0,0 @@ -import Axios from 'axios'; - -const client = Axios.create -({ - baseURL: '/api/', - timeout: 5000, - withCredentials: true -}); - -export default client; \ No newline at end of file diff --git a/Modix/ClientApp/src/services/ConfigurationService.ts b/Modix/ClientApp/src/services/ConfigurationService.ts deleted file mode 100644 index 30849bdfe..000000000 --- a/Modix/ClientApp/src/services/ConfigurationService.ts +++ /dev/null @@ -1,67 +0,0 @@ -import _ from 'lodash'; -import client from '@/services/ApiClient'; -import DesignatedChannelMapping from '@/models/moderation/DesignatedChannelMapping'; -import DesignatedChannelCreationData from '@/models/moderation/DesignatedChannelCreationData'; -import ClaimMapping from '@/models/ClaimMapping'; -import Deserializer from '@/app/Deserializer'; -import RoleClaimModifyData from '@/models/configuration/RoleClaimModifyData'; -import DesignatedRoleMapping from '@/models/moderation/DesignatedRoleMapping'; -import DesignatedRoleCreationData from '@/models/moderation/DesignatedRoleCreationData'; - -export default class ConfigurationService -{ - static async getChannelDesignations(): Promise - { - let response = (await client.get("config/channels")).data; - return response; - } - - static async getChannelDesignationTypes(): Promise - { - let response = (await client.get("config/channels/types")).data; - return response; - } - - static async assignChannel(data: DesignatedChannelCreationData): Promise - { - await client.put("config/channels", data); - } - - static async unassignChannel(id: string): Promise - { - await client.delete(`config/channels/${id}`); - } - - static async getRoleDesignations(): Promise - { - let response = (await client.get("config/roles")).data; - return response; - } - - static async getRoleDesignationTypes(): Promise - { - let response = (await client.get("config/roles/types")).data; - return response; - } - - static async assignRole(data: DesignatedRoleCreationData): Promise - { - await client.put("config/roles", data); - } - - static async unassignRole(id: string): Promise - { - await client.delete(`config/roles/${id}`); - } - - static async getMappedClaims(): Promise - { - let response = (await client.get("config/claims")).data; - return _.map(response, claim => Deserializer.getNew(ClaimMapping, claim)); - } - - static async modifyRoleClaim(data: RoleClaimModifyData) - { - await client.patch("config/claims", data); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/services/GeneralService.ts b/Modix/ClientApp/src/services/GeneralService.ts deleted file mode 100644 index cd317fd1b..000000000 --- a/Modix/ClientApp/src/services/GeneralService.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { ModuleHelpData } from '@/models/ModuleHelpData'; -import User from '@/models/User'; -import _ from 'lodash'; -import InfractionSummary from '@/models/infractions/InfractionSummary'; - -import client from './ApiClient'; -import Channel from '@/models/Channel'; -import Role from '@/models/Role'; -import Deserializer from '@/app/Deserializer'; -import Claim from '@/models/Claim'; -import Guild from '@/models/Guild'; -import GuildStatApiData from '@/models/GuildStatApiData'; -import InfractionCreationData from '@/models/infractions/InfractionCreationData'; -import TableParameters from '@/models/TableParameters'; -import RecordsPage from '@/models/RecordsPage'; - -export default class GeneralService -{ - static async getUser(): Promise - { - let response = (await client.get("userInfo")).data; - let user = Deserializer.getNew(User, response); - - return user; - } - - static async getGuildStats(): Promise - { - let response = (await client.get("guildStats")).data; - return response; - } - - static async getGuildRoles(): Promise - { - let response = (await client.get("roles")).data; - return _.map(response, response => Deserializer.getNew(Role, response)); - } - - static async getClaims(): Promise<{[claim: string]: Claim[]}> - { - let response = (await client.get("claims")).data; - return response; - } - - static async getChannels(): Promise - { - let response = (await client.get("channels")).data; - return response; - } - - static async getGuilds(): Promise - { - let response = (await client.get("guildOptions")).data; - return response; - } - - static async switchGuild(guildId: string): Promise - { - await client.post(`switchGuild/${guildId}`); - } - - static async getCommands(): Promise - { - let response = (await client.get("commands")).data; - return response; - } - - static async getUserAutocomplete(query: string): Promise - { - let response = (await client.get(`autocomplete/users?query=${encodeURIComponent(query)}`)).data; - return _.map(response, user => Deserializer.getNew(User, user)); - } - - static async getChannelAutocomplete(query: string): Promise - { - let response = (await client.get(`autocomplete/channels?query=${encodeURIComponent(query)}`)).data; - return response; - } - - static async getRankRolesAutocomplete(query: string): Promise - { - let response = (await client.get(`autocomplete/roles?query=${encodeURIComponent(query)}&rankOnly=true`)).data; - return response; - } - - static async getAllRolesAutocomplete(query: string): Promise - { - let response = (await client.get(`autocomplete/roles?query=${encodeURIComponent(query)}&rankOnly=false`)).data; - return response; - } - - static async getInfractions(tableParams: TableParameters): Promise> - { - let response = (await client.put("infractions", tableParams)).data; - return response; - } - - static async uploadRowboatJson(data: FormData) : Promise - { - console.log(data); - - let response = await client.put("infractions/import", data, { timeout: 30000 }); - return response.data; - } - - static async createInfraction(subjectId: string, data: InfractionCreationData): Promise - { - await client.put(`infractions/${subjectId}/create`, data); - } - - static async rescindInfraction(id: number): Promise - { - await client.post(`infractions/${id}/rescind`); - } - - static async deleteInfraction(id: number): Promise - { - await client.post(`infractions/${id}/delete`); - } - - static async doesModeratorOutrankUser(subjectId: string): Promise - { - return (await client.get(`infractions/${subjectId}/doesModeratorOutrankUser`)).data; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/services/LogService.ts b/Modix/ClientApp/src/services/LogService.ts deleted file mode 100644 index 53392bd72..000000000 --- a/Modix/ClientApp/src/services/LogService.ts +++ /dev/null @@ -1,30 +0,0 @@ -import _ from 'lodash'; -import client from './ApiClient'; -import RecordsPage from '@/models/RecordsPage'; -import DeletedMessage from '@/models/logs/DeletedMessage' -import TableParameters from '@/models/TableParameters'; -import DeletedMessageAbstraction from '@/models/logs/DeletedMessageAbstraction'; -import Deserializer from '@/app/Deserializer'; - -export default class LogService -{ - static async getDeletedMessages(tableParams: TableParameters): Promise> - { - return (await client.put(`logs/deletedMessages`, tableParams)).data; - } - - static async getDeletionContext(batchId: number): Promise - { - let response = (await client.get(`logs/deletedMessages/context/${batchId}`)).data as DeletedMessageAbstraction[]; - - for (let msg of response) - { - if (msg.sentTime) - { - msg.sentTime = new Date(msg.sentTime); - } - } - - return response; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/services/PersistentKeyValueService.ts b/Modix/ClientApp/src/services/PersistentKeyValueService.ts deleted file mode 100644 index a11f40deb..000000000 --- a/Modix/ClientApp/src/services/PersistentKeyValueService.ts +++ /dev/null @@ -1,31 +0,0 @@ -export default class PersistentKeyValueService -{ - private static _cache: Map = new Map(); - - static get(key: string): T | null - { - if (!this._cache.get(key)) - { - let found = localStorage.getItem(key); - - if (found) - { - this._cache.set(key, JSON.parse(found)); - } - else - { - return null; - } - } - - return this._cache.get(key); - } - - static set(key: string, data: any) - { - let json = JSON.stringify(data); - - localStorage.setItem(key, json); - this._cache.set(key, data); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/services/PromotionService.ts b/Modix/ClientApp/src/services/PromotionService.ts deleted file mode 100644 index 40e1cbeea..000000000 --- a/Modix/ClientApp/src/services/PromotionService.ts +++ /dev/null @@ -1,76 +0,0 @@ -import PromotionCampaign from '@/models/promotions/PromotionCampaign'; -import PromotionCommentData from '@/models/promotions/PromotionCommentData'; -import PromotionCreationData from '@/models/promotions/PromotionCreationData'; -import client from './ApiClient'; -import _ from 'lodash'; -import PromotionComment from '@/models/promotions/PromotionComment'; -import Deserializer from '@/app/Deserializer'; -import Role from '@/models/Role'; - -export default class PromotionService -{ - static async getCampaigns(): Promise - { - let response = (await client.get("campaigns")).data as PromotionCampaign[]; - - _.forEach(response, campaign => - { - if (campaign.createAction) - { - campaign.createAction.created = new Date(campaign.createAction.created); - } - }); - - return _.map(response, campaign => Deserializer.getNew(PromotionCampaign, campaign)); - } - - static async getComments(campaignId: number): Promise - { - let response = (await client.get(`campaigns/${campaignId}`)).data as PromotionComment[]; - - _.forEach(response, comment => - { - if (comment.createAction) - { - comment.createAction.created = new Date(comment.createAction.created); - } - }); - - return response.filter(comment => !comment.isModified); - } - - static async getNextRankRoleForUser(subjectId: string): Promise - { - return (await client.get(`campaigns/${subjectId}/nextRank`)).data as Role; - } - - static async createCampaign(data: PromotionCreationData): Promise - { - await client.put("campaigns", data); - } - - static async commentOnCampaign(campaign: PromotionCampaign, data: PromotionCommentData): Promise - { - await client.put(`campaigns/${campaign.id}/comments`, data); - } - - static async updateComment(comment: PromotionComment, data: PromotionCommentData): Promise - { - await client.put(`campaigns/${comment.id}/updateComment`, data); - } - - static async approveCampaign(campaign: PromotionCampaign): Promise - { - await client.post(`campaigns/${campaign.id}/accept`); - } - - static async forceApproveCampaign(campaign: PromotionCampaign): Promise - { - await client.post(`campaigns/${campaign.id}/forceAccept`); - } - - static async denyCampaign(campaign: PromotionCampaign): Promise - { - await client.post(`campaigns/${campaign.id}/reject`); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/services/TagService.ts b/Modix/ClientApp/src/services/TagService.ts deleted file mode 100644 index 8f97d5301..000000000 --- a/Modix/ClientApp/src/services/TagService.ts +++ /dev/null @@ -1,28 +0,0 @@ -import _ from 'lodash'; -import client from './ApiClient'; -import TagSummary from '@/models/Tags/TagSummary'; -import TagCreationData from '@/models/Tags/TagCreationData'; -import TagMutationData from '@/models/Tags/TagMutationData'; - -export default class TagService -{ - static async getTags(): Promise - { - return (await client.get("tags")).data; - } - - static async createTag(name: string, data: TagCreationData): Promise - { - await client.put(`tags/${name}`, data); - } - - static async updateTag(name: string, data: TagMutationData): Promise - { - await client.patch(`tags/${name}`, data); - } - - static async deleteTag(name: string): Promise - { - await client.delete(`tags/${name}`); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/services/UserService.ts b/Modix/ClientApp/src/services/UserService.ts deleted file mode 100644 index 62cce57ef..000000000 --- a/Modix/ClientApp/src/services/UserService.ts +++ /dev/null @@ -1,19 +0,0 @@ -import _ from 'lodash'; -import client from './ApiClient'; -import EphemeralUser from '@/models/EphemeralUser'; -import UserMessagePerChannelCount from '@/models/UserMessagePerChannelCount'; - -export default class UserService -{ - static async getUserInformation(userId: string): Promise - { - return (await client.get(`userInformation/${userId}`)).data; - } - - static async getMessageCountPerChannel(userId: string, after: Date | null = null): Promise - { - const afterQuery = after ? after.toISOString() : ""; - let response = (await client.get(`userInformation/${userId}/messages?after=${afterQuery}`)).data; - return response; - } -} diff --git a/Modix/ClientApp/src/shims.d.ts b/Modix/ClientApp/src/shims.d.ts deleted file mode 100644 index 577712af6..000000000 --- a/Modix/ClientApp/src/shims.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -declare module '*.vue' { - import Vue from 'vue'; - export default Vue; -} - -declare module 'vue-chartjs'; -declare module 'vue-good-table'; -declare module 'tinycolor'; -declare module 'vue-clipboards'; -declare module '@/app/discord-markdown'; \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/autocomplete.scss b/Modix/ClientApp/src/styles/components/autocomplete.scss deleted file mode 100644 index 7823ac086..000000000 --- a/Modix/ClientApp/src/styles/components/autocomplete.scss +++ /dev/null @@ -1,36 +0,0 @@ -.autocomplete -{ - position: absolute; - z-index: 999; - - background: $white; - - padding: 0em 0em 0 0em; - - box-shadow: $box-shadow; - border-radius: $box-radius; - border-top-left-radius: 0; - border-top-right-radius: 0; - - .entry - { - padding: 0.25em 0.5em 0.25em 0.5em; - - &.hovered - { - background: $info; - color: $white; - - cursor: pointer; - } - } -} - -.autocomplete-container -{ - position: relative; - button.delete - { - margin-left: 8px; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/batchDeleteContext.scss b/Modix/ClientApp/src/styles/components/batchDeleteContext.scss deleted file mode 100644 index e0da43ba4..000000000 --- a/Modix/ClientApp/src/styles/components/batchDeleteContext.scss +++ /dev/null @@ -1,58 +0,0 @@ -.batchDeleteContext -{ - .sentTime - { - color: grey; - font-size: 0.75em; - display: inline-block; - - min-width: 45px; - max-width: 45px; - - font-family: monospace; - } - - .front - { - white-space: nowrap; - } - - .startDate - { - text-align: center; - margin-bottom: 0.75em; - } - - .username - { - font-weight: bold; - } - - .deletedMessage - { - .content - { - margin-left: 0.5em; - word-break: break-word; - - .noContent - { - color: grey; - } - } - - &.deleted - { - padding: 0.25em 1.25em 0.25em 1.25em; - margin: 0 -1.25em 0 -1.25em; - - background-color: $light; - color: $black; - - & + .deleted - { - border-top: 1px solid $white; - } - } - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/commandView.scss b/Modix/ClientApp/src/styles/components/commandView.scss deleted file mode 100644 index dd7273c05..000000000 --- a/Modix/ClientApp/src/styles/components/commandView.scss +++ /dev/null @@ -1,31 +0,0 @@ -.command -{ - background: $light; - padding: 0.5em 1em; - - .commandName - { - display: inline-block; - font-family: "Consolas", monospace; - font-size: 1.15em; - margin-right: 1em; - font-weight: bold; - } - - .overload - { - color: $subtitle-color; - } -} - -.spacer -{ - margin-bottom: 1em; - color: $subtitle-color; -} - -.summary -{ - display: inline-block; - margin-right: 1em; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/configuration.scss b/Modix/ClientApp/src/styles/components/configuration.scss deleted file mode 100644 index 9b8a68a7c..000000000 --- a/Modix/ClientApp/src/styles/components/configuration.scss +++ /dev/null @@ -1,20 +0,0 @@ -.configuration -{ - .tabs - { - a - { - margin-bottom: 0; - } - - ul - { - border-bottom: 0; - } - - li - { - margin-top: 0; - } - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/designations.scss b/Modix/ClientApp/src/styles/components/designations.scss deleted file mode 100644 index 44c63c51c..000000000 --- a/Modix/ClientApp/src/styles/components/designations.scss +++ /dev/null @@ -1,63 +0,0 @@ -.designation -{ - margin-right: 0.5em; -} - -.channelLoader -{ - width: 100%; - height: 64px; -} - -.designationRow -{ - display: flex; - justify-content: space-between; - - .designationGroup - { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - - .title - { - margin-bottom: 0; - } - - .heading - { - margin-top: 0.33em; - margin-bottom: 0; - color: gray; - } - - .designationList - { - display: flex; - flex-wrap: wrap; - align-items: baseline; - - margin-top: 0.33em; - margin-bottom: 0.33em; - } - } - - .assign - { - font-size: 32px; - font-weight: bold; - - height: 32px; - width: 32px; - - padding: 0 0 0.16em 0; - line-height: 0; - } - - &:hover - { - background-color: rgba(black, 0.1); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/infractions.scss b/Modix/ClientApp/src/styles/components/infractions.scss deleted file mode 100644 index 753e6a348..000000000 --- a/Modix/ClientApp/src/styles/components/infractions.scss +++ /dev/null @@ -1,57 +0,0 @@ -@import "~vue-good-table/dist/vue-good-table.css"; - -.vgt-table.bordered -{ - font-size: 14px; - - select - { - font-size: 12px; - } - - th - { - text-align: center; - padding: 0.33em; - } -} - -.vgt-wrap -{ - width: 100%; -} - -.vgt-input, .vgt-select -{ - padding: 0px 4px; - height: 28px; -} - -@include mobile() -{ - .vgt-table.bordered - { - font-size: initial; - - select - { - font-size: initial; - } - } -} - -.channel, .userMention -{ - font-weight: bold; -} - -.pre -{ - white-space: pre-line; -} - -.typeCell -{ - display: block; - white-space: nowrap; -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/loadingSpinner.scss b/Modix/ClientApp/src/styles/components/loadingSpinner.scss deleted file mode 100644 index ecc889923..000000000 --- a/Modix/ClientApp/src/styles/components/loadingSpinner.scss +++ /dev/null @@ -1,170 +0,0 @@ - -@keyframes fadeOut -{ - 0% - { - transform: scale(1); - } - 100% - { - transform: scale(0); - - visibility: hidden; - pointer-events: none; - } -} - -@keyframes fadeIn -{ - 0% - { - opacity: 0; - } - 100% - { - opacity: 1; - } -} - -.loaderRoot -{ - background: $primary; - position: fixed; - - width: 6000px; - height: 6000px; - - top: 50%; - left: 50%; - - margin-top: -3000px; - margin-left: -3000px; - - border-radius: 9999em; - - transform-origin: 50% 50%; - z-index: 999; -} - -.loaderRoot.complete -{ - animation: fadeOut $default-transition forwards; - animation-delay: 800ms; -} - -.spinner -{ - @include loader(); - - background: $primary; - - position: relative; - - border-width: 48px; - top: calc(50% - 300px); - left: calc(50% - 300px); - - width: 600px; - height: 600px; - - border-color: transparent; - - animation-duration: 0.5s; - animation-iteration-count: infinite; - - box-shadow: -12px 12px 24px -10px rgba(0, 0, 0, 0.25), 6px -6px 32px -16px inset rgba(255, 255, 255, 0.33); - - .complete & - { - animation-iteration-count: 4; - } -} - -.spinnerCenter -{ - opacity: 0; - - max-width: 250px; - position: absolute; - - top: calc(50% - 125px); - left: calc(50% - 125px); - - .complete & - { - animation: fadeIn 0.25s $default-easing forwards; - } -} - -.loadingText -{ - font-size: 1em; - position: absolute; - top: 52.25%; - width: 100%; - text-align: center; - - color: white; -} - -.sk-cube-grid { - width: 256px; - height: 256px; - margin: 100px auto; -} - -.sk-cube-grid .sk-cube { - width: 33.3333%; - height: 33.3333%; - background-color: $primary; - float: left; - -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; - animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; -} -.sk-cube-grid .sk-cube1 { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; } -.sk-cube-grid .sk-cube2 { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; } -.sk-cube-grid .sk-cube3 { - -webkit-animation-delay: 0.4s; - animation-delay: 0.4s; } -.sk-cube-grid .sk-cube4 { - -webkit-animation-delay: 0.1s; - animation-delay: 0.1s; } -.sk-cube-grid .sk-cube5 { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; } -.sk-cube-grid .sk-cube6 { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; } -.sk-cube-grid .sk-cube7 { - -webkit-animation-delay: 0s; - animation-delay: 0s; } -.sk-cube-grid .sk-cube8 { - -webkit-animation-delay: 0.1s; - animation-delay: 0.1s; } -.sk-cube-grid .sk-cube9 { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; } - -@-webkit-keyframes sk-cubeGridScaleDelay { - 0%, 70%, 100% { - -webkit-transform: scale3D(1, 1, 1); - transform: scale3D(1, 1, 1); - } 35% { - -webkit-transform: scale3D(0, 0, 1); - transform: scale3D(0, 0, 1); - } -} - -@keyframes sk-cubeGridScaleDelay { - 0%, 70%, 100% { - -webkit-transform: scale3D(1, 1, 1); - transform: scale3D(1, 1, 1); - } 35% { - -webkit-transform: scale3D(0, 0, 1); - transform: scale3D(0, 0, 1); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/miniProfile.scss b/Modix/ClientApp/src/styles/components/miniProfile.scss deleted file mode 100644 index 229577228..000000000 --- a/Modix/ClientApp/src/styles/components/miniProfile.scss +++ /dev/null @@ -1,100 +0,0 @@ -.guildDropdown -{ - cursor: pointer; - - border-left: 1px solid transparentize($white, 0.75); - - margin: 5px 5px 0 5px; - padding-left: 0.66em; - - display: inline-block; -} - -.icon -{ - vertical-align: middle; - margin-right: 0.5em; -} - -.profile -{ - justify-self: flex-end; - color: white; - - padding: 0px 6px 0px 12px; - - .title:not(:last-child) - { - margin-bottom: 0; - } - - .v-popover .trigger - { - display: flex !important; - flex-direction: row; - align-items: center; - } - - .username - { - margin-right: 0.2em; - cursor: pointer; - - small - { - font-size: 0.6em; - position: relative; - top: -3px; - } - - @include tiny() - { - display: none; - } - } -} - -.options .option -{ - color: $black; - padding: 0.5em 0.5em 0.5em 0.5em; - display: block; - cursor: pointer; - - &:hover - { - background: $link; - color: white; - - cursor: pointer; - } - - &.theme - { - text-transform: capitalize; - } - - &.divider - { - padding-top: 0; - padding-bottom: 0; - border-bottom: 1px solid lightgray; - } -} - -.title.is-4, .title.is-4 a -{ - word-break: normal; - color: white; -} - -img.avatar-icon, img.dropdown-icon -{ - margin-right: 0.5em; - - border-radius: 4px; - - height: 32px; - max-height: 32px; -} - diff --git a/Modix/ClientApp/src/styles/components/navbar.scss b/Modix/ClientApp/src/styles/components/navbar.scss deleted file mode 100644 index 57c640943..000000000 --- a/Modix/ClientApp/src/styles/components/navbar.scss +++ /dev/null @@ -1,84 +0,0 @@ -.navbar-brand -{ - justify-content: space-between; -} - -.brand-start -{ - display: flex; -} - -.brand-end -{ - display: flex; -} - -.small-logo -{ - filter: invert(100%); -} - -nav -{ - box-shadow: 0px 2px 8px -4px $background; - user-select: none; -} - -.navbar-menu -{ - @include touch() - { - padding: 0; - } -} - -.navbar-burger -{ - color: white; - - &:hover - { - color: white; - } -} - -.navbar-brand -{ - a:not(.link) - { - margin: 0; - padding: 0; - } - - img - { - height: 52px; - max-height: 52px; - } -} - -.navbar-item -{ - display: flex; - align-items: center; - - background-color: $primary; - - color: white; - - &.is-active - { - color: $text !important; - background-color: $body-background-color !important; - - font-weight: bold; - pointer-events: none; - box-shadow: 0px 6px 0px 0px $body-background-color; - } - - &:hover - { - color: white; - background-color: darken($primary, 3); - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/promotionCommentView.scss b/Modix/ClientApp/src/styles/components/promotionCommentView.scss deleted file mode 100644 index b97021c5d..000000000 --- a/Modix/ClientApp/src/styles/components/promotionCommentView.scss +++ /dev/null @@ -1,87 +0,0 @@ -.comment -{ - background-color: $light; - padding: 0.75em; - - margin-left: -1.5em; - - box-shadow: $box-shadow; - - transform: rotateZ(90deg); - transform-origin: left center; - transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1); - opacity: 0; - - overflow-wrap: break-word; - - display: flex; - flex-direction: row; - align-items: center; - align-content: stretch; - - overflow: hidden; - - &:first-child - { - border-radius: 0 1em 0 0; - } - - &:last-child - { - margin-bottom: 1em; - border-radius: 0 0 1em 0; - } - - &:first-child:last-child - { - border-radius: 0 1em 1em 0; - } - - &.expanded - { - transform: none; - opacity: 1; - } - - word-wrap: break-word; -} - -.commentBody -{ - word-wrap: break-word; - overflow: hidden; //no zalgo for you -} - -.sentimentIcon -{ - display: inline-block; - - line-height: 1; - - min-width: 36px; - min-height: 24px; - - margin-right: 0.33em; - margin-left: 0.33em; - - font-size: 1.35em; -} - -.date -{ - font-size: 0.8em; - color: grey; - margin-left: 0.5em; -} - -.own -{ - background: lighten($primary, 50%); -} - -.edit -{ - float: right; - margin-left: 0.33em; - padding: 2em; -} diff --git a/Modix/ClientApp/src/styles/components/promotionListItem.scss b/Modix/ClientApp/src/styles/components/promotionListItem.scss deleted file mode 100644 index 73cb933bd..000000000 --- a/Modix/ClientApp/src/styles/components/promotionListItem.scss +++ /dev/null @@ -1,244 +0,0 @@ -$transition: all 0.33s cubic-bezier(0.23, 1, 0.32, 1); - -.commentBox -{ - flex-basis: 100%; -} - -.campaign .columns.is-gapless:not(:last-child) -{ - margin-bottom: 0; - - @include mobile() - { - margin-bottom: 0.5em; - } -} - -.displayName -{ - position: relative; - left: 8px; -} - -.ratings -{ - padding: 0.5rem 0.75rem 0em 0.75em; - - .rating - { - padding: 0 1em 0.5em 1em; - white-space: nowrap; - } - - .columns - { - margin-bottom: 0; - } - - @include mobile() - { - margin-top: 0em; - margin-right: 0.5em; - } -} - -.toRole -{ - font-weight: 400 !important; - padding: 4px 8px; - - border: 2px solid currentColor; - border-color: currentColor !important; - border-radius: 3px; - - @include mobile() - { - display: inline-block; - } -} - -.campaign -{ - position: relative; - padding: 1.35em 1.2em 0.5em 1.2em; - - overflow: hidden; - - transition: $transition; - - & > .columns - { - cursor: pointer; - } - - &.expanded - { - box-shadow: 0px 0px 24px rgba(0, 0, 0, 0.33); - - & .comment - { - transform: rotateZ(0deg); - opacity: 1; - } - - .details - { - max-height: 9999px; - overflow: visible; - } - - @include mobile() - { - max-height: 9999px; - - .adminButtons, .ratings - { - display: block; - } - } - } - - &.inactive - { - background-color: $light; - } - - .toRole - { - font-size: 14px; - position: relative; - top: -2px; - left: 20px; - } - - .commentNotification - { - text-align: center; - font-weight: bold; - - margin: 1em 0 0.5em 0; - } - - .date, .role - { - font-size: 14px; - - font-weight: normal; - color: grey; - - margin-bottom: -10px; - } - - .title - { - margin-bottom: 0; - } - - .expander - { - top: 0px; - } - - .nameBar - { - display: flex; - flex-direction: row; - align-items: center; - line-height: normal; - - .roleColumn - { - white-space: nowrap; - } - - .leftSide - { - display: flex; - flex-direction: row; - align-items: flex-start; - - @include mobile() - { - flex-basis: 50%; - flex-grow: 1; - } - } - - @include mobile() - { - align-items: flex-start; - } - } - - .details - { - transition: $transition; - max-height: 0px; - overflow: hidden; - } - - .titleBar - { - margin-bottom: 0; - display: flex; - align-items: center; - } - - .commentLoader - { - display: inline-block; - width: 32px; - } - - @include mobile() - { - padding: 1.25em 0.5em 0.5em 1em; - margin: 0; - - .adminButtons, .ratings - { - transition: $transition; - display: none; - } - - .nameBar - { - padding: 12px 12px 0 12px; - } - } -} - -.level.is-mobile .level-item:last-child -{ - margin-right: 0; -} - -.statusIcon -{ - display: inline-block; - font-size: 1.5em; - width: 1.3em; -} - -.commentList -{ - margin-top: 0.5em; -} - -.adminButtons -{ - margin-top: 0.1em; - margin-left: 0.75em; -} - -.mobile-expander -{ - margin-right: 0.5em; - margin-left: 1.75em; - - @include tablet() - { - display: none; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/tagCreationModal.scss b/Modix/ClientApp/src/styles/components/tagCreationModal.scss deleted file mode 100644 index ac07a342f..000000000 --- a/Modix/ClientApp/src/styles/components/tagCreationModal.scss +++ /dev/null @@ -1,50 +0,0 @@ -$discordText: #dcddde; -$discordUrl: #0096cf; -$discordBackground: #36393f; - -$discordCodeBackground: #2f3136; -$discordCodeBorder: rgb(32, 34, 37); -$discordCodeText: rgb(185, 187, 190); - -.markdownPreview -{ - color: $discordText; - background-color: $discordBackground; - font-size: 16px; - - padding: 1em; - - strong - { - color: $discordText; - } - - a - { - color: $discordUrl; - } - - pre - { - font-family: "Consolas", "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; - color: $discordCodeText; - padding: 7px; - background: $discordCodeBackground; - font-size: 14px; - - border-radius: 4px; - border-style: solid; - border-width: 1px; - border-color: $discordCodeBorder; - - margin: 0; - } -} - -.tagCreation -{ - textarea - { - font-family: Consolas, monospace; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/components/userProfile.scss b/Modix/ClientApp/src/styles/components/userProfile.scss deleted file mode 100644 index c84252638..000000000 --- a/Modix/ClientApp/src/styles/components/userProfile.scss +++ /dev/null @@ -1,53 +0,0 @@ -.userProfile -{ - -} - -.userInfoSection -{ - display: flex; - flex-direction: row; - margin-bottom: 1.5em; - - & > .info - { - flex-grow: 1; - flex-basis: 100%; - - @include mobile() - { - width: 100%; - } - } - - & > .avatar - { - margin-left: 1em; - - padding: 0; - overflow: hidden; - - display: flex; - justify-content: center; - align-items: center; - - min-width: 200px; - - img - { - width: 100%; - } - - @include mobile() - { - margin: 0.5em 0 1.5em 0; - width: 50%; - } - } - - @include mobile() - { - flex-direction: column-reverse; - align-items: center; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/mixins/modal-dark-bg.scss b/Modix/ClientApp/src/styles/mixins/modal-dark-bg.scss deleted file mode 100644 index 2a3b93395..000000000 --- a/Modix/ClientApp/src/styles/mixins/modal-dark-bg.scss +++ /dev/null @@ -1,10 +0,0 @@ -.modal-card-foot -{ - color: white; - - label:hover - { - color: white; - font-weight: bold; - } -} \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/required.scss b/Modix/ClientApp/src/styles/required.scss deleted file mode 100644 index 76501fbab..000000000 --- a/Modix/ClientApp/src/styles/required.scss +++ /dev/null @@ -1,31 +0,0 @@ -//Base Bulma includes -@import "~bulma/sass/utilities/_all"; - -//Our variables + overrides -@import "@/styles/variables.scss"; - -//Tooltip stuff -@import "@/styles/tooltip.scss"; - -//All the actual components, that use the variables we redeclared -@import "~bulma/sass/base/_all"; -@import "~bulma/sass/elements/_all"; -@import "~bulma/sass/components/_all"; -@import "~bulma/sass/grid/_all"; -@import "~bulma/sass/layout/_all"; -@import "~bulma/sass/form/_all"; - -//All our components -@import "@/styles/components/navbar.scss"; -@import "@/styles/components/loadingSpinner.scss"; -@import "@/styles/components/infractions.scss"; -@import "@/styles/components/miniProfile.scss"; -@import "@/styles/components/autocomplete.scss"; -@import "@/styles/components/promotionCommentView.scss"; -@import "@/styles/components/commandView.scss"; -@import "@/styles/components/promotionListItem.scss"; -@import "@/styles/components/configuration.scss"; -@import "@/styles/components/batchDeleteContext.scss"; -@import "@/styles/components/userProfile.scss"; -@import "@/styles/components/tagCreationModal.scss"; -@import "@/styles/components/designations.scss"; \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/themes/default.scss b/Modix/ClientApp/src/styles/themes/default.scss deleted file mode 100644 index f2a2d1442..000000000 --- a/Modix/ClientApp/src/styles/themes/default.scss +++ /dev/null @@ -1,6 +0,0 @@ -$primary: rgb(128, 55, 136); - -$modal-card-title-color: white; - -//THIS SHOULD BE THE LAST LINE OF THE FILE -@import "../required"; \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/themes/holiday.scss b/Modix/ClientApp/src/styles/themes/holiday.scss deleted file mode 100644 index 892434a62..000000000 --- a/Modix/ClientApp/src/styles/themes/holiday.scss +++ /dev/null @@ -1,22 +0,0 @@ -@import '../mixins/modal-dark-bg.scss'; - -$holiday-green: #235941; -$holiday-red: #9c2b40; - -$info: $holiday-green; -$link: $holiday-red; - -$primary: $holiday-green; - -$navbar-item-hover-background-color: darken($holiday-green, 5%); -$navbar-item-hover-color: white; - -$modal-card-title-color: white; - -.modal-card-head strong -{ - color: white; -} - -//THIS SHOULD BE THE LAST LINE OF THE FILE -@import "../required"; \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/themes/spoopy.scss b/Modix/ClientApp/src/styles/themes/spoopy.scss deleted file mode 100644 index acf683bf5..000000000 --- a/Modix/ClientApp/src/styles/themes/spoopy.scss +++ /dev/null @@ -1,101 +0,0 @@ -@import '../mixins/modal-dark-bg.scss'; - -//Generic Bulma overrides - -$primary: rgb(200, 120, 50); -$link: $primary; - -$color: rgba(230, 230, 230, 1); -$text: $color; -$text-strong: lighten($text, 50%); - -$title-color: $color; -$subtitle-color: darken($color, 15%); - -$info: $link; -$link-hover: $text; -$link-active: $primary; -$link-focus: darken($text, 2.5%); - -$white: black; -$black: white; - -$background: rgb(43, 43, 43); -$body-background-color: rgb(43, 43, 43); -$light: darken($background, 2.5%); - -.delete -{ - background-color: $primary; -} - -//Bulma Element Overrides - -//Box -$box-background-color: $light; -$box-shadow: 0 2px 3px rgba($text, 0.1), 0 0 0 1px rgba($text, 0.1); - -//Generic Inputs -$input-background-color: $light; -$input-color: $text; -$input-border-color: $subtitle-color; -$input-hover-border-color: $text; -$label-color: $subtitle-color; - -//Button -$button-background-color: $light; -$button-color: $text; - -//Menu -$menu-label-color: $text; -$menu-item-hover-color: lighten($text, 50%); - -//Modal -$modal-background-background-color: darken(transparentize($background, 0.2), 20%); -$modal-card-body-background-color: $background; - -//Modix Component Overrides - -//A little ugly, but makes role colors readable -:not(.markdownPreview) .toRole -{ - background: $color !important; -} - -select[multiple] -{ - background: white !important; -} - -.option:hover -{ - color: white; -} - -//Promotions -.campaign.expanded -{ - box-shadow: 0px 0px 12px rgba(255, 255, 255, 0.33); -} - -.own -{ - background: darken($primary, 33%) !important; -} - -//Table component is stupid -.vgt-wrap -{ - strong - { - color: black; - } -} - -.checkbox:hover, .radio:hover -{ - color: $subtitle-color !important; -} - -//THIS SHOULD BE THE LAST LINE OF THE FILE -@import "../required"; \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/tooltip.scss b/Modix/ClientApp/src/styles/tooltip.scss deleted file mode 100644 index 02801466d..000000000 --- a/Modix/ClientApp/src/styles/tooltip.scss +++ /dev/null @@ -1,113 +0,0 @@ -.tooltip { - display: block !important; - z-index: 10000; - - .tooltip-inner { - background: black; - color: white; - border-radius: 16px; - padding: 5px 10px 4px; - } - - .tooltip-arrow { - width: 0; - height: 0; - border-style: solid; - position: absolute; - margin: 5px; - border-color: black; - } - - &[x-placement^="top"] { - margin-bottom: 5px; - - .tooltip-arrow { - border-width: 5px 5px 0 5px; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - bottom: -5px; - left: calc(50% - 5px); - margin-top: 0; - margin-bottom: 0; - } - } - - &[x-placement^="bottom"] { - margin-top: 5px; - - .tooltip-arrow { - border-width: 0 5px 5px 5px; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-top-color: transparent !important; - top: -5px; - left: calc(50% - 5px); - margin-top: 0; - margin-bottom: 0; - } - } - - &[x-placement^="right"] { - margin-left: 5px; - - .tooltip-arrow { - border-width: 5px 5px 5px 0; - border-left-color: transparent !important; - border-top-color: transparent !important; - border-bottom-color: transparent !important; - left: -5px; - top: calc(50% - 5px); - margin-left: 0; - margin-right: 0; - } - } - - &[x-placement^="left"] { - margin-right: 5px; - - .tooltip-arrow { - border-width: 5px 0 5px 5px; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - right: -5px; - top: calc(50% - 5px); - margin-left: 0; - margin-right: 0; - } - } - - &[aria-hidden='true'] { - visibility: hidden; - opacity: 0; - transition: opacity .15s, visibility .15s; - } - - &[aria-hidden='false'] { - visibility: visible; - opacity: 1; - transition: opacity .15s; - } - } - - .tooltip - { - .tooltip-inner - { - color: $text; - - padding: 0.25em 0.4em; - overflow: hidden; - border-radius: 2px; - - background: $background; - box-shadow: $box-shadow; - } - - .tooltip-arrow - { - border-color: $background; - color: $white; - } - } \ No newline at end of file diff --git a/Modix/ClientApp/src/styles/variables.scss b/Modix/ClientApp/src/styles/variables.scss deleted file mode 100644 index 181537f5e..000000000 --- a/Modix/ClientApp/src/styles/variables.scss +++ /dev/null @@ -1,151 +0,0 @@ -$default-easing: cubic-bezier(0.165, 0.84, 0.44, 1); -$default-transition: 1s $default-easing; - -$navbar-background-color: $primary; -$modal-card-head-background-color: $primary; -$box-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default; - -#app -{ - opacity: 1; -} - -@mixin tiny() -{ - @media screen and (max-width: 550px) - { - @content - } -} - -.is-active .modal-card -{ - top: 0; -} - -a.is-disabled -{ - color: $grey; - cursor: not-allowed; -} - -.pointer -{ - cursor: pointer; -} - -.modal-card -{ - top: 100%; - - transition: top 0.66s cubic-bezier(0.23, 1, 0.32, 1); - transition-delay: 200ms; - - &.wide - { - width: 85%; - } - - @include tablet() - { - width: 95%; - } - - .modal-card-foot.level - { - justify-content: space-between; - } - - .modal-card-head p.modal-card-title - { - margin-bottom: 0; - - strong - { - color: white; - } - } -} - -.small-title -{ - color: #7a7a7a; - font-size: 0.75em; - letter-spacing: 0.05em; - text-transform: uppercase; - - margin: 1em 0; -} - -.content ul -{ - margin: 0; -} - -.expander -{ - display: inline-block; - font-size: 12px; - - vertical-align: top; - position: relative; - top: 0.66em; -} - -@keyframes fadeIn -{ - 0% - { - opacity: 0; - } - 100% - { - opacity: 1; - } -} - -.root -{ - opacity: 0; - - &.visible - { - animation: fadeIn $default-transition forwards; - animation-delay: 500ms; - } -} - -.root > .section -{ - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} - -.delete -{ - @include delete(); -} - -.tabs.is-small > ul -{ - margin: 0; -} - -.message-title -{ - font-size: 1.5em; -} - -.message-narrow -{ - max-width: 900px; - margin-left: auto; - margin-right: auto; -} - -.section-title -{ - margin-bottom: 0.25em; - font-size: 1.25em; - font-weight: bold; -} diff --git a/Modix/ClientApp/src/tslint.json b/Modix/ClientApp/src/tslint.json deleted file mode 100644 index 6e1e39517..000000000 --- a/Modix/ClientApp/src/tslint.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "defaultSeverity": "off" -} \ No newline at end of file diff --git a/Modix/ClientApp/src/views/Commands.vue b/Modix/ClientApp/src/views/Commands.vue deleted file mode 100644 index e49c29800..000000000 --- a/Modix/ClientApp/src/views/Commands.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/views/Configuration/ChannelDesignations.vue b/Modix/ClientApp/src/views/Configuration/ChannelDesignations.vue deleted file mode 100644 index 5285c92e8..000000000 --- a/Modix/ClientApp/src/views/Configuration/ChannelDesignations.vue +++ /dev/null @@ -1,237 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/views/Configuration/Claims.vue b/Modix/ClientApp/src/views/Configuration/Claims.vue deleted file mode 100644 index eca5d91aa..000000000 --- a/Modix/ClientApp/src/views/Configuration/Claims.vue +++ /dev/null @@ -1,231 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/views/Configuration/Configuration.vue b/Modix/ClientApp/src/views/Configuration/Configuration.vue deleted file mode 100644 index 647d4325a..000000000 --- a/Modix/ClientApp/src/views/Configuration/Configuration.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/views/Configuration/RoleDesignations.vue b/Modix/ClientApp/src/views/Configuration/RoleDesignations.vue deleted file mode 100644 index f1edb5a2b..000000000 --- a/Modix/ClientApp/src/views/Configuration/RoleDesignations.vue +++ /dev/null @@ -1,245 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/views/CreatePromotion.vue b/Modix/ClientApp/src/views/CreatePromotion.vue deleted file mode 100644 index 5e5e89a3e..000000000 --- a/Modix/ClientApp/src/views/CreatePromotion.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/views/Home.vue b/Modix/ClientApp/src/views/Home.vue deleted file mode 100644 index 569a473ff..000000000 --- a/Modix/ClientApp/src/views/Home.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/views/Logs.vue b/Modix/ClientApp/src/views/Logs.vue deleted file mode 100644 index a2ba427e3..000000000 --- a/Modix/ClientApp/src/views/Logs.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/views/Promotions.vue b/Modix/ClientApp/src/views/Promotions.vue deleted file mode 100644 index ac1ff9496..000000000 --- a/Modix/ClientApp/src/views/Promotions.vue +++ /dev/null @@ -1,398 +0,0 @@ - - - - - diff --git a/Modix/ClientApp/src/views/Stats.vue b/Modix/ClientApp/src/views/Stats.vue deleted file mode 100644 index 5e40a9c80..000000000 --- a/Modix/ClientApp/src/views/Stats.vue +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - diff --git a/Modix/ClientApp/src/views/Tags/Tags.vue b/Modix/ClientApp/src/views/Tags/Tags.vue deleted file mode 100644 index 1437f8c3a..000000000 --- a/Modix/ClientApp/src/views/Tags/Tags.vue +++ /dev/null @@ -1,293 +0,0 @@ - - - diff --git a/Modix/ClientApp/src/views/UserLookup.vue b/Modix/ClientApp/src/views/UserLookup.vue deleted file mode 100644 index f3214038c..000000000 --- a/Modix/ClientApp/src/views/UserLookup.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/Modix/ClientApp/tsconfig.json b/Modix/ClientApp/tsconfig.json deleted file mode 100644 index dbff90746..000000000 --- a/Modix/ClientApp/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "esnext", - "strict": true, - "jsx": "preserve", - "importHelpers": true, - "moduleResolution": "node", - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "emitDecoratorMetadata": true, - "esModuleInterop": true, - "sourceMap": true, - "baseUrl": ".", - "types": [ - "node", - "webpack-env" ], - "paths": { - "@/*": [ - "src/*" - ] - }, - "lib": [ - "es2015", - "dom", - "dom.iterable", - "scripthost" - ] - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - "src/**/*.vue", - "tests/**/*.ts", - "tests/**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -} diff --git a/Modix/ClientApp/vue.config.js b/Modix/ClientApp/vue.config.js deleted file mode 100644 index a1af7eb30..000000000 --- a/Modix/ClientApp/vue.config.js +++ /dev/null @@ -1,78 +0,0 @@ -const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); -const webpack = require('webpack'); - -let highlightLanguages = ['cs', 'json']; - -module.exports = { - devServer: - { - proxy: - { - "/api": - { - target: "http://localhost:5000", - changeOrigin: true - } - } - }, - - - - css: - { - extract: false - }, - - configureWebpack: - { - devtool: 'source-map' - }, - - chainWebpack: config => - { - config.resolve - - config - .plugin('html') - .tap(args => - { - if (args[0] && args[0].minify) - { - args[0].minify.removeScriptTypeAttributes = false; - } - - return args; - }); - - config - .plugin('fork-ts-checker') - .use(ForkTsCheckerWebpackPlugin, - [{ - checkSyntacticErrors: true, - vue: true, - formatter: 'codeframe', - workers: ForkTsCheckerWebpackPlugin.TWO_CPUS_FREE - }]); - - config.module - .rule('ts') - .use('ts-loader') - .loader('ts-loader') - .tap(args => - { - args.experimentalWatchApi = true; - return args; - }); - - config.resolve.alias - .set('chart.js', 'chart.js/dist/Chart.js'); - - config - .plugin('ignore') - .use(webpack.IgnorePlugin, [/^\.\/locale$/, /moment$/]); - - config - .plugin('context-replace') - .use(webpack.ContextReplacementPlugin, [/highlight\.js\/lib\/languages$/, new RegExp(`^./(${highlightLanguages.join('|')})$`)]); - } -} \ No newline at end of file diff --git a/Modix/Controllers/ApiController.cs b/Modix/Controllers/ApiController.cs deleted file mode 100644 index 78af38424..000000000 --- a/Modix/Controllers/ApiController.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Linq; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Models.Core; -using Modix.Services.Core; - -namespace Modix.Controllers -{ - public class ApiController : ModixController - { - public ApiController(DiscordSocketClient client, IAuthorizationService auth) : base(client, auth) - { - - } - - public IActionResult Roles() - { - return Ok(UserGuild.Roles.Select(d => new { d.Id, d.Name, Color = d.Color.ToString() })); - } - - public IActionResult Channels() - { - return Ok(UserGuild.Channels.Select(d => new { d.Id, d.Name })); - } - - public IActionResult Claims() - { - return Ok(ClaimInfoData.GetClaims()); - } - - [HttpGet("~/api/me")] - public IActionResult LoggedInUserInfo() - { - return Ok(ModixUser); - } - - [HttpGet] - public IActionResult GuildOptions() - { - var guilds = DiscordSocketClient - .Guilds - .Where(d => d.GetUser(SocketUser?.Id ?? 0) != null) - .Select(d => new { d.Name, d.Id, d.IconUrl }); - - return Ok(guilds); - } - - [HttpPost("~/api/switchGuild/{guildId}")] - public IActionResult SwitchGuild(ulong guildId) - { - var user = DiscordSocketClient.GetGuild(guildId)?.GetUser(SocketUser.Id); - - if (user == null) - { - return BadRequest("Invalid guild, or user is not a member of the guild."); - } - - Response.Cookies.Append("SelectedGuild", user.Guild.Id.ToString()); - - return Ok(); - } - } -} diff --git a/Modix/Controllers/AuthController.cs b/Modix/Controllers/AuthController.cs deleted file mode 100644 index da8191b8c..000000000 --- a/Modix/Controllers/AuthController.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Threading.Tasks; -using AspNet.Security.OAuth.Discord; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authentication.Cookies; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; - -namespace Modix.Controllers -{ - [Route("~/api")] - public class AuthController : Controller - { - [HttpGet("unauthorized")] - public IActionResult NeedLogin() - { - return Unauthorized(); - } - - [HttpGet("login")] - public IActionResult LogIn() - { - return Challenge(new AuthenticationProperties { RedirectUri = "/" }, DiscordAuthenticationDefaults.AuthenticationScheme); - } - - [HttpGet("logout")] - public async Task LogOut() - { - await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); - - //Make sure we remove the SelectedGuild cookie too - Response.Cookies.Append("SelectedGuild", "", new CookieOptions - { - Expires = DateTimeOffset.MinValue - }); - - return Redirect("/"); - } - - [HttpGet("userInfo")] - public IActionResult UserInfo() - { - if (User.Identity.IsAuthenticated) - { - return RedirectToAction("LoggedInUserInfo", "Api"); - } - else - { - return Unauthorized(); - } - } - } -} diff --git a/Modix/Controllers/AutocompleteController.cs b/Modix/Controllers/AutocompleteController.cs deleted file mode 100644 index fe598362c..000000000 --- a/Modix/Controllers/AutocompleteController.cs +++ /dev/null @@ -1,103 +0,0 @@ -#nullable enable -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Discord; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Models.Core; -using Modix.Data.Utilities; -using Modix.Models; -using Modix.Services.Core; - -namespace Modix.Controllers -{ - [Route("~/api/autocomplete")] - public class AutocompleteController : ModixController - { - private IDesignatedRoleService RoleService { get; } - private readonly IUserService _userService; - - public AutocompleteController(DiscordSocketClient client, IAuthorizationService modixAuth, IDesignatedRoleService roleService, IUserService userService) : base(client, modixAuth) - { - RoleService = roleService; - _userService = userService; - } - - [HttpGet("channels")] - public IActionResult AutocompleteChannels(string query) - { - if (query.StartsWith('#')) - { - query = query.Substring(1); - } - - var result = UserGuild.Channels - .Where(d => d is SocketTextChannel) - .Where(d => d.Name.OrdinalContains(query)) - .Take(10) - .Select(d => new { d.Id, d.Name }); - - return Ok(result); - } - - [HttpGet("users")] - public async Task AutocompleteUsers(string query) - { - var result = UserGuild?.Users is null - ? Enumerable.Empty() - : UserGuild.Users - .Where(d => d.Username.OrdinalContains(query) || d.Id.ToString() == query) - .Take(10) - .Select(ModixUser.FromIGuildUser); - - if (!result.Any() && ulong.TryParse(query, out var userId)) - { - var user = await _userService.GetUserInformationAsync(UserGuild.Id, userId); - - if(user != null) - result = result.Append(ModixUser.FromIGuildUser(user)); - } - return Ok(result); - } - - [HttpGet("roles")] - public async Task AutocompleteRoles(string query, [FromQuery] bool rankOnly) - { - if (query.StartsWith('@')) - { - query = query.Substring(1); - } - - if (rankOnly) - { - var criteria = new DesignatedRoleMappingSearchCriteria - { - GuildId = UserGuild.Id, - Type = DesignatedRoleType.Rank, - IsDeleted = false - }; - - IEnumerable result = await RoleService.SearchDesignatedRolesAsync(criteria); - - if (!string.IsNullOrWhiteSpace(query)) - { - result = result.Where(d => d.Role.Name.OrdinalContains(query)); - } - - return Ok(result.Take(10).Select(d => new { d.Role.Id, d.Role.Name })); - } - else - { - IEnumerable result = UserGuild.Roles; - - if (!string.IsNullOrWhiteSpace(query)) - { - result = result.Where(d => d.Name.OrdinalContains(query)); - } - - return Ok(result.Take(10).Select(d => new { d.Id, d.Name })); - } - } - } -} diff --git a/Modix/Controllers/ChannelController.cs b/Modix/Controllers/ChannelController.cs deleted file mode 100644 index f59151fdb..000000000 --- a/Modix/Controllers/ChannelController.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Models.Core; -using Modix.Models; -using Modix.Services.Core; - -namespace Modix.Controllers -{ - [Route("~/api/config/channels")] - public class ChannelController : ModixController - { - private IDesignatedChannelService ChannelService { get; } - - public ChannelController(DiscordSocketClient client, IAuthorizationService modixAuth, IDesignatedChannelService channelService) : base(client, modixAuth) - { - ChannelService = channelService; - } - - [HttpGet("types")] - public IActionResult ChannelDesignationTypes() - { - return Ok(Enum.GetNames(typeof(DesignatedChannelType))); - } - - [HttpGet] - public async Task ChannelDesignations() - { - var designatedChannels = await ChannelService.GetDesignatedChannelsAsync(ModixAuth.CurrentGuildId.Value); - - var mapped = designatedChannels.Select(d => new DesignatedChannelApiData - { - Id = d.Id, - ChannelId = d.Channel.Id, - ChannelDesignation = d.Type, - Name = UserGuild?.GetChannel(d.Channel.Id)?.Name ?? d.Channel.Id.ToString() - }); - - return Ok(mapped); - } - - [HttpDelete("{id}")] - public async Task RemoveDesignation(long id) - { - await ChannelService.RemoveDesignatedChannelByIdAsync(id); - return Ok(); - } - - [HttpPut] - public async Task CreateDesignation([FromBody] DesignatedChannelCreationData creationData) - { - var foundChannel = DiscordSocketClient - ?.GetGuild(ModixAuth.CurrentGuildId.Value) - ?.GetChannel(creationData.ChannelId); - - if (foundChannel == null || !(foundChannel is ISocketMessageChannel messageChannel)) - { - return BadRequest($"A message channel was not found with id {creationData.ChannelId} in guild with id {ModixAuth.CurrentGuildId}"); - } - - foreach (var designation in creationData.ChannelDesignations) - { - await ChannelService.AddDesignatedChannelAsync(foundChannel.Guild, messageChannel, designation); - } - - return Ok(); - } - } -} diff --git a/Modix/Controllers/ClaimsController.cs b/Modix/Controllers/ClaimsController.cs deleted file mode 100644 index 494272ce3..000000000 --- a/Modix/Controllers/ClaimsController.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Threading.Tasks; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Models.Core; -using Modix.Data.Repositories; -using Modix.Models; -using Modix.Services.Core; - -namespace Modix.Controllers -{ - [Route("~/api/config/claims")] - public class ClaimsController : ModixController - { - private IClaimMappingRepository ClaimMappingRepository { get; } - - public ClaimsController(DiscordSocketClient client, IAuthorizationService modixAuth, IClaimMappingRepository claimMappingRepository) : base(client, modixAuth) - { - ClaimMappingRepository = claimMappingRepository; - } - - [HttpGet] - public async Task RoleClaims() - { - var found = await ClaimMappingRepository.SearchBriefsAsync(new ClaimMappingSearchCriteria - { - IsDeleted = false - }); - - return Ok(found); - } - - [HttpPatch] - public async Task ModifyRole([FromBody]RoleClaimModifyData modifyData) - { - await ModixAuth.ModifyClaimMappingAsync(modifyData.RoleId, modifyData.Claim, modifyData.MappingType); - return Ok(); - } - - [HttpDelete("{id}")] - public async Task DeleteClaim(int id) - { - using (var transaction = await ClaimMappingRepository.BeginDeleteTransactionAsync()) - { - if (!await ClaimMappingRepository.TryDeleteAsync(id, SocketUser.Id)) - return NotFound(); - - transaction.Commit(); - } - return Ok(); - } - } -} diff --git a/Modix/Controllers/CommandsController.cs b/Modix/Controllers/CommandsController.cs deleted file mode 100644 index 1760a06cb..000000000 --- a/Modix/Controllers/CommandsController.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Linq; -using Microsoft.AspNetCore.Mvc; -using Modix.Services.CommandHelp; -using Modix.Services.Utilities; - -namespace Modix.Controllers -{ - [Route("~/api")] - public class CommandsController : Controller - { - private readonly ICommandHelpService _commandHelpService; - - public CommandsController(ICommandHelpService commandHelpService) - { - _commandHelpService = commandHelpService; - } - - [HttpGet("commands")] - public IActionResult Commands() - { - var modules = _commandHelpService.GetModuleHelpData(); - - var mapped = modules.Select(m => new - { - Name = m.Name, - Summary = m.Summary, - Commands = m.Commands.Select(c => new - { - Name = c.Name, - Summary = c.Summary, - Aliases = FormatUtilities.CollapsePlurals(c.Aliases), - Parameters = c.Parameters, - IsSlashCommand = c.IsSlashCommand, - }), - }); - - return Ok(mapped); - } - } -} diff --git a/Modix/Controllers/GuildStatsController.cs b/Modix/Controllers/GuildStatsController.cs deleted file mode 100644 index 6520bc2b2..000000000 --- a/Modix/Controllers/GuildStatsController.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Threading.Tasks; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Models; -using Modix.Services.Core; -using Modix.Services.GuildStats; - -namespace Modix.Controllers -{ - [Route("~/api/guildStats")] - public class GuildStatsController : ModixController - { - private readonly IGuildStatService _statService; - - public GuildStatsController(IGuildStatService statService, DiscordSocketClient client, IAuthorizationService modixAuth) : base(client, modixAuth) - { - _statService = statService; - } - - [HttpGet] - public async Task Get() - { - var roleCounts = await _statService.GetGuildMemberDistributionAsync(UserGuild); - var messageCounts = await _statService.GetTopMessageCounts(UserGuild, ModixUser.UserId); - - return Ok(new GuildStatApiData - { - GuildName = UserGuild.Name, - GuildRoleCounts = roleCounts, - TopUserMessageCounts = messageCounts, - }); - } - } -} diff --git a/Modix/Controllers/InfractionController.cs b/Modix/Controllers/InfractionController.cs deleted file mode 100644 index 20e887e98..000000000 --- a/Modix/Controllers/InfractionController.cs +++ /dev/null @@ -1,180 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -using Discord.WebSocket; - -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Models; -using Modix.Data.Models.Moderation; -using Modix.Mappings; -using Modix.Models; -using Modix.Services.Core; -using Modix.Services.Moderation; - -namespace Modix.Controllers -{ - [Route("~/api/infractions")] - public class InfractionController : ModixController - { - private IModerationService ModerationService { get; } - - public InfractionController(DiscordSocketClient client, IAuthorizationService modixAuth, IModerationService moderationService) : base(client, modixAuth) - { - ModerationService = moderationService; - } - - [HttpPut] - public async Task GetInfractionsAsync([FromBody] TableParameters tableParams) - { - var sortingCriteria = tableParams.Sort.ToInfractionSummarySortingCriteria(); - - var searchCriteria = tableParams.Filters.ToInfractionSearchCriteria(); - searchCriteria.GuildId = UserGuild.Id; - - var pagingCriteria = tableParams.ToPagingCriteria(); - - var result = await ModerationService.SearchInfractionsAsync( - searchCriteria, - sortingCriteria, - pagingCriteria); - - var outranksValues = new Dictionary(); - - foreach (var (guildId, subjectId) in result.Records - .Select(x => (guildId: x.GuildId, subjectId: x.Subject.Id)) - .Distinct()) - { - outranksValues[subjectId] - = await ModerationService.DoesModeratorOutrankUserAsync(guildId, SocketUser.Id, subjectId); - } - - var mapped = result.Records.Select( - x => new InfractionData - { - Id = x.Id, - GuildId = x.GuildId, - Type = x.Type, - Reason = x.Reason, - Duration = x.Duration, - Subject = x.Subject, - - CreateAction = x.CreateAction, - RescindAction = x.RescindAction, - DeleteAction = x.DeleteAction, - - CanRescind - = x.RescindAction is null - && x.DeleteAction is null - && (x.Type == InfractionType.Mute || x.Type == InfractionType.Ban) - && outranksValues[x.Subject.Id], - - CanDelete - = x.DeleteAction is null - && outranksValues[x.Subject.Id], - }).ToArray(); - - return Ok(new RecordsPage() - { - FilteredRecordCount = result.FilteredRecordCount, - TotalRecordCount = result.TotalRecordCount, - Records = mapped, - }); - } - - [HttpPut("{subjectId}/create")] - public async Task CreateInfractionAsync(ulong subjectId, [FromBody] Models.InfractionCreationData creationData) - { - if (!Enum.TryParse(creationData.Type, out var type)) - return BadRequest($"{creationData.Type} is not a valid infraction type."); - - var duration = GetTimeSpan( - creationData.DurationMonths, - creationData.DurationDays, - creationData.DurationHours, - creationData.DurationMinutes, - creationData.DurationSeconds); - - try - { - await ModerationService.CreateInfractionAsync(SocketUser.Guild.Id, SocketUser.Id, type, subjectId, creationData.Reason, duration); - } - catch (Exception ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - - TimeSpan? GetTimeSpan(int? months, int? days, int? hours, int? minutes, int? seconds) - { - if (months is null - && days is null - && hours is null - && minutes is null - && seconds is null) - return null; - - var now = DateTimeOffset.UtcNow; - var daysInMonth = DateTime.DaysInMonth(now.Year, now.Month); - - var monthSpan = months is null - ? TimeSpan.Zero - : TimeSpan.FromDays(months.Value * daysInMonth); - - var daySpan = days is null - ? TimeSpan.Zero - : TimeSpan.FromDays(days.Value); - - var hourSpan = hours is null - ? TimeSpan.Zero - : TimeSpan.FromHours(hours.Value); - - var minuteSpan = minutes is null - ? TimeSpan.Zero - : TimeSpan.FromMinutes(minutes.Value); - - var secondSpan = seconds is null - ? TimeSpan.Zero - : TimeSpan.FromSeconds(seconds.Value); - - return monthSpan + daySpan + hourSpan + minuteSpan + secondSpan; - } - } - - [HttpPost("{id}/rescind")] - public async Task RescindInfractionAsync(long id, [FromBody] string reason = null) - { - try - { - await ModerationService.RescindInfractionAsync(id, reason); - } - catch (Exception ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPost("{id}/delete")] - public async Task DeleteInfractionAsync(long id) - { - try - { - await ModerationService.DeleteInfractionAsync(id); - } - catch (Exception ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpGet("{subjectId}/doesModeratorOutrankUser")] - public async Task DoesModeratorOutrankUserAsync(ulong subjectId) - => Ok(await ModerationService.DoesModeratorOutrankUserAsync(ModixAuth.CurrentGuildId.Value, ModixAuth.CurrentUserId.Value, subjectId)); - } -} diff --git a/Modix/Controllers/LogController.cs b/Modix/Controllers/LogController.cs deleted file mode 100644 index 71422ae41..000000000 --- a/Modix/Controllers/LogController.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -using Discord; -using Discord.WebSocket; - -using Microsoft.AspNetCore.Mvc; - -using Modix.Data.Models; -using Modix.Data.Models.Moderation; -using Modix.Models; -using Modix.Services.Core; -using Modix.Services.Moderation; -using Modix.Services.Utilities; - -namespace Modix.Controllers -{ - [Route("~/api/logs")] - public class LogController : ModixController - { - private IModerationService ModerationService { get; } - - public LogController(DiscordSocketClient client, IAuthorizationService modixAuth, IModerationService moderationService) : base(client, modixAuth) - { - ModerationService = moderationService; - } - - [HttpGet("deletedMessages/context/{batchId}")] - public async Task GetDeletionContext(long batchId) - { - var deletedMessages = await ModerationService.SearchDeletedMessagesAsync(new DeletedMessageSearchCriteria - { - BatchId = batchId - }, - new SortingCriteria[] - { - //Sort ascending, so the earliest message is first - new SortingCriteria { PropertyName = nameof(DeletedMessageSummary.MessageId), Direction = SortDirection.Ascending } - }, - new PagingCriteria()); - - var firstMessage = deletedMessages.Records.FirstOrDefault(); - - if (firstMessage == null) - { - return NotFound($"Couldn't find messages for batch id {batchId}"); - } - - var batchChannelId = deletedMessages.Records.First().Channel.Id; - - if (!(UserGuild.GetChannel(batchChannelId) is ISocketMessageChannel foundChannel)) - { - return NotFound($"Couldn't recreate context - text channel with id {batchChannelId} not found"); - } - - if (SocketUser.GetPermissions(foundChannel as IGuildChannel).ReadMessageHistory == false) - { - return Unauthorized($"You don't have read permissions for the channel this batch was deleted in (#{foundChannel.Name})"); - } - - var beforeMessages = await foundChannel.GetMessagesAsync(firstMessage.MessageId, Direction.Before, 25).FlattenAsync(); - var afterMessages = await foundChannel.GetMessagesAsync(firstMessage.MessageId, Direction.After, 25 + (int)deletedMessages.FilteredRecordCount).FlattenAsync(); - - var allMessages = new List(); - allMessages.AddRange(deletedMessages.Records.Select(d => DeletedMessageAbstraction.FromSummary(d))); - allMessages.AddRange(beforeMessages.Select(d => DeletedMessageAbstraction.FromIMessage(d))); - allMessages.AddRange(afterMessages.Select(d => DeletedMessageAbstraction.FromIMessage(d))); - - var sorted = allMessages.OrderBy(d => d.MessageId); - - return Ok(sorted); - } - - [HttpPut("deletedMessages")] - public async Task DeletedMessagesAsync([FromBody]TableParameters tableParams) - { - var sortProperty = DeletedMessageSummary.SortablePropertyNames.FirstOrDefault( - x => x.Equals(tableParams.Sort.Field, StringComparison.OrdinalIgnoreCase)) ?? nameof(DeletedMessageSummary.Created); - - var searchCriteria = new DeletedMessageSearchCriteria() { GuildId = UserGuild.Id }; - - foreach (var filter in tableParams.Filters) - { - searchCriteria.WithPropertyValue(filter.Field, filter.Value); - } - - var result = await ModerationService.SearchDeletedMessagesAsync(searchCriteria, - new[] - { - new SortingCriteria - { - PropertyName = sortProperty, - Direction = tableParams.Sort.Direction, - } - }, - new PagingCriteria - { - FirstRecordIndex = tableParams.Page * tableParams.PerPage, - PageSize = tableParams.PerPage, - }); - - var mapped = new - { - result.TotalRecordCount, - result.FilteredRecordCount, - Records = result.Records.Select( - x => new - { - Channel = x.Channel.Name, - Author = x.Author.GetFullUsername(), - x.Created, - CreatedBy = x.CreatedBy.GetFullUsername(), - x.Content, - x.Reason, - x.BatchId, - }), - }; - - return Ok(mapped); - } - } -} diff --git a/Modix/Controllers/ModixController.cs b/Modix/Controllers/ModixController.cs deleted file mode 100644 index 923ee818c..000000000 --- a/Modix/Controllers/ModixController.cs +++ /dev/null @@ -1,91 +0,0 @@ -#nullable enable -using System.Linq; -using System.Security.Claims; -using System.Threading.Tasks; - -using Discord.WebSocket; - -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; - -using Modix.Models; - -namespace Modix.Controllers -{ - [ValidateAntiForgeryToken] - [Authorize] - public class ModixController : Controller - { - protected DiscordSocketClient DiscordSocketClient { get; private set; } - protected ModixUser ModixUser { get; private set; } - protected SocketGuildUser? SocketUser { get; private set; } - protected SocketGuild? UserGuild => SocketUser?.Guild; - - protected Services.Core.IAuthorizationService ModixAuth { get; private set; } - - public ModixController(DiscordSocketClient client, Services.Core.IAuthorizationService modixAuth) - { - DiscordSocketClient = client; - ModixAuth = modixAuth; - } - - public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) - { - if (!DiscordSocketClient.Guilds.Any()) - { - return; - } - - if (HttpContext.User == null) - { - await HttpContext.ChallengeAsync(); - return; - } - - //Parse the ID to look up socket user - ModixUser = ModixUser.FromClaimsPrincipal(HttpContext.User); - - var guildCookie = Request.Cookies["SelectedGuild"]; - SocketGuild guildToSearch; - - if (!string.IsNullOrWhiteSpace(guildCookie)) - { - var guildId = ulong.Parse(guildCookie); - guildToSearch = DiscordSocketClient.GetGuild(guildId); - } - else - { - guildToSearch = DiscordSocketClient.Guilds.First(); - } - - SocketUser = guildToSearch?.GetUser(ModixUser.UserId); - - if (SocketUser is null) - { - await HttpContext.ChallengeAsync(); - return; - } - - await AssignClaims(); - - //Do it again here to assign claims (this is very lazy of us) - ModixUser = ModixUser.FromClaimsPrincipal(HttpContext.User); - ModixUser.SelectedGuild = SocketUser.Guild.Id; - ModixUser.AvatarHash = SocketUser.GetAvatarUrl() ?? SocketUser.GetDefaultAvatarUrl(); - - await next(); - } - - protected async Task AssignClaims() - { - await ModixAuth.OnAuthenticatedAsync(SocketUser!.Id, SocketUser.Guild.Id, SocketUser.Roles.Select(x => x.Id).ToList()); - - var claims = (await ModixAuth.GetGuildUserClaimsAsync(SocketUser)) - .Select(d => new Claim(ClaimTypes.Role, d.ToString())); - - (HttpContext.User.Identity as ClaimsIdentity)?.AddClaims(claims); - } - } -} diff --git a/Modix/Controllers/PromotionController.cs b/Modix/Controllers/PromotionController.cs deleted file mode 100644 index 8905c90fb..000000000 --- a/Modix/Controllers/PromotionController.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Discord; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Models.Promotions; -using Modix.Models; -using Modix.Services.Core; -using Modix.Services.Promotions; - -namespace Modix.Controllers -{ - [Route("~/api/campaigns")] - public class PromotionController : ModixController - { - private readonly IPromotionsService _promotionsService; - - public PromotionController(DiscordSocketClient client, IPromotionsService promotionService, IAuthorizationService auth) : base(client, auth) - { - _promotionsService = promotionService; - } - - [HttpGet] - public async Task Campaigns() - => Ok(await _promotionsService.SearchCampaignsAsync(new PromotionCampaignSearchCriteria - { - GuildId = UserGuild.Id - })); - - [HttpGet("{campaignId}")] - public async Task CampaignComments(long campaignId) - { - var result = await _promotionsService.GetCampaignDetailsAsync(campaignId); - - if (result == null) { return NotFound(); } - - //TODO: Map this properly - return Ok(result.Comments.Select(c => new - { - c.Id, - c.Sentiment, - c.Content, - CreateAction = new { c.CreateAction.Id, c.CreateAction.Created }, - IsModified = !(c.ModifyAction is null), - IsFromCurrentUser = c.CreateAction.CreatedBy.Id == ModixAuth.CurrentUserId, - })); - } - - [HttpGet("{subjectId}/nextRank")] - public async Task GetNextRankRoleForUser(ulong subjectId) - { - var result = await _promotionsService.GetNextRankRoleForUserAsync(subjectId); - var color = result is null - ? Color.DarkGrey - : UserGuild.Roles.FirstOrDefault(r => r.Id == result.Id).Color; - - return Ok(new { result?.Id, result?.Name, fgColor = color.ToString() }); - } - - [HttpPut("{campaignId}/comments")] - public async Task AddComment(int campaignId, [FromBody] PromotionCommentData commentData) - { - var campaigns = await _promotionsService.SearchCampaignsAsync(new PromotionCampaignSearchCriteria - { - Id = campaignId - }); - - if (!campaigns.Any()) - { - return BadRequest($"Invalid campaign ID specified ({campaignId})"); - } - - try - { - await _promotionsService.AddCommentAsync(campaignId, commentData.Sentiment, commentData.Body); - } - catch (InvalidOperationException ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPut("{commentId}/updateComment")] - public async Task UpdateComment(int commentId, [FromBody] PromotionCommentData commentData) - { - try - { - await _promotionsService.UpdateCommentAsync(commentId, commentData.Sentiment, commentData.Body); - } - catch (InvalidOperationException ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPost("{campaignId}/accept")] - public async Task AcceptCampaign(int campaignId) - { - try - { - await _promotionsService.AcceptCampaignAsync(campaignId, false); - } - catch (InvalidOperationException ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPost("{campaignId}/forceAccept")] - public async Task ForceAcceptCampaign(int campaignId) - { - try - { - await _promotionsService.AcceptCampaignAsync(campaignId, true); - } - catch (InvalidOperationException ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPost("{campaignId}/reject")] - public async Task RejectCampaign(int campaignId) - { - try - { - await _promotionsService.RejectCampaignAsync(campaignId); - } - catch (InvalidOperationException ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPut] - public async Task Create([FromBody] PromotionCreationData creationData) - { - try - { - await _promotionsService.CreateCampaignAsync(creationData.UserId, creationData.Comment); - } - catch (InvalidOperationException ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - } -} diff --git a/Modix/Controllers/RoleController.cs b/Modix/Controllers/RoleController.cs deleted file mode 100644 index b14fbccc3..000000000 --- a/Modix/Controllers/RoleController.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Models.Core; -using Modix.Models; -using Modix.Services.Core; - -namespace Modix.Controllers -{ - [Route("~/api/config/roles")] - public class RoleController : ModixController - { - private IDesignatedRoleService RoleService { get; } - - public RoleController(DiscordSocketClient client, IAuthorizationService modixAuth, IDesignatedRoleService roleService) : base(client, modixAuth) - { - RoleService = roleService; - } - - [HttpGet("types")] - public IActionResult RoleDesignationTypes() - { - return Ok(Enum.GetNames(typeof(DesignatedRoleType))); - } - - [HttpGet] - public async Task RoleDesignations() - { - var designatedRoles = await RoleService.GetDesignatedRolesAsync(ModixAuth.CurrentGuildId.Value); - - var mapped = designatedRoles.Select(d => new DesignatedRoleApiData - { - Id = d.Id, - RoleId = d.Role.Id, - RoleDesignation = d.Type, - Name = UserGuild?.GetRole(d.Role.Id)?.Name ?? d.Role.Id.ToString() - }); - - return Ok(mapped); - } - - [HttpDelete("{id}")] - public async Task RemoveDesignation(long id) - { - await RoleService.RemoveDesignatedRoleByIdAsync(id); - return Ok(); - } - - [HttpPut] - public async Task CreateDesignation([FromBody] DesignatedRoleCreationData creationData) - { - var foundRole = DiscordSocketClient - ?.GetGuild(ModixAuth.CurrentGuildId.Value) - ?.GetRole(creationData.RoleId); - - if (foundRole == null) - { - return BadRequest($"A role was not found with id {creationData.RoleId} in guild with id {ModixAuth.CurrentGuildId}"); - } - - foreach (var designation in creationData.RoleDesignations) - { - await RoleService.AddDesignatedRoleAsync(foundRole.Guild.Id, foundRole.Id, designation); - } - - return Ok(); - } - } -} diff --git a/Modix/Controllers/TagController.cs b/Modix/Controllers/TagController.cs deleted file mode 100644 index 17213c8a8..000000000 --- a/Modix/Controllers/TagController.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; - -using Discord.WebSocket; - -using Microsoft.AspNetCore.Mvc; - -using Modix.Data.Models.Tags; -using Modix.Services.Core; -using Modix.Services.Tags; - -namespace Modix.Controllers -{ - [Route("~/api/tags")] - public class TagController : ModixController - { - private ITagService TagService { get; } - - public TagController(DiscordSocketClient client, IAuthorizationService modixAuth, ITagService tagService) : base(client, modixAuth) - { - TagService = tagService; - } - - [HttpGet] - public async Task GetTagsAsync() - { - var summaries = await TagService.GetSummariesAsync(new TagSearchCriteria - { - GuildId = UserGuild.Id, - }); - - var data = summaries.Select(x => new Models.Tags.TagData() - { - Content = x.Content, - Created = x.CreateAction.Created, - IsOwnedByRole = !(x.OwnerRole is null), - Name = x.Name, - OwnerUser = x.OwnerUser, - OwnerRole = x.OwnerRole, - Uses = x.Uses, - TagSummary = x, - }) - .ToArray(); - - foreach (var tag in data) - { - // TODO Revisit this functionality - tag.CanMaintain = false; - } - - return Ok(data); - } - - [HttpPut("{name}")] - public async Task CreateTagAsync([FromRoute] string name, [FromBody] Models.Tags.TagCreationData data) - { - try - { - await TagService.CreateTagAsync(ModixUser.SelectedGuild, ModixUser.UserId, name, data.Content); - } - catch (Exception ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpPatch("{name}")] - public async Task UpdateTagAsync([FromRoute] string name, [FromBody] Models.Tags.TagMutationData data) - { - try - { - await TagService.ModifyTagAsync(ModixUser.SelectedGuild, ModixUser.UserId, name, data.Content); - } - catch (Exception ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - - [HttpDelete("{name}")] - public async Task DeleteTagAsync([FromRoute] string name) - { - try - { - await TagService.DeleteTagAsync(ModixUser.SelectedGuild, ModixUser.UserId, name); - } - catch (Exception ex) - { - return BadRequest(ex.Message); - } - - return Ok(); - } - } -} diff --git a/Modix/Controllers/UserInformationController.cs b/Modix/Controllers/UserInformationController.cs deleted file mode 100644 index 51aabe82e..000000000 --- a/Modix/Controllers/UserInformationController.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Discord; -using Discord.WebSocket; -using Microsoft.AspNetCore.Mvc; -using Modix.Data.Repositories; -using Modix.Services.Core; -using Modix.Services.Utilities; - -namespace Modix.Controllers -{ - [Route("~/api/userInformation")] - public class UserInformationController : ModixController - { - private IUserService UserService { get; } - - private IMessageRepository MessageRepository { get; } - - public UserInformationController( - DiscordSocketClient client, - IAuthorizationService modixAuth, - IUserService userService, - IMessageRepository messageRepository) - : base(client, modixAuth) - { - UserService = userService; - MessageRepository = messageRepository; - } - - [HttpGet("{userIdString}")] - public async Task GetUserInformationAsync(string userIdString) - { - if (!ulong.TryParse(userIdString, out var userId)) - return Ok(null); - - var userInformation = await UserService.GetUserInformationAsync(UserGuild.Id, userId); - - if (userInformation is null) - return Ok(null); - - var userRank = await MessageRepository.GetGuildUserParticipationStatistics(UserGuild.Id, userId); - var messages7 = await MessageRepository.GetGuildUserMessageCountByDate(UserGuild.Id, userId, TimeSpan.FromDays(7)); - var messages30 = await MessageRepository.GetGuildUserMessageCountByDate(UserGuild.Id, userId, TimeSpan.FromDays(30)); - - var roles = userInformation.RoleIds - .Select(x => UserGuild.GetRole(x)) - .OrderByDescending(x => x.IsHoisted) - .ThenByDescending(x => x.Position) - .ToArray(); - - var mapped = new - { - Id = userInformation.Id.ToString(), - Username = userInformation.Username, - Nickname = userInformation.Nickname, - Discriminator = userInformation.Discriminator, - AvatarUrl = userInformation.AvatarId != null ? userInformation.GetAvatarUrl(ImageFormat.Auto, 256) : userInformation.GetDefaultAvatarUrl(), - CreatedAt = userInformation.CreatedAt, - JoinedAt = userInformation.JoinedAt, - FirstSeen = userInformation.FirstSeen, - LastSeen = userInformation.LastSeen, - Rank = userRank.Rank, - Last7DaysMessages = messages7.Sum(x => x.MessageCount), - Last30DaysMessages = messages30.Sum(x => x.MessageCount), - AverageMessagesPerDay = userRank.AveragePerDay, - Percentile = userRank.Percentile, - Roles = roles - .Where(x => !x.IsEveryone) - .Select(x => new - { - Id = x.Id, - Name = x.Name, - Color = x.Color.ToString(), - }), - IsBanned = userInformation.IsBanned, - BanReason = userInformation.BanReason, - IsGuildMember = userInformation.GuildId != default - }; - - return Ok(mapped); - } - - [HttpGet("{userIdString}/messages")] - public async Task GetUserMessagesPerChannelAsync(string userIdString, DateTimeOffset after = default) - { - if (!ulong.TryParse(userIdString, out var userId)) - return Ok(null); - - var timespan = DateTimeOffset.UtcNow - after; - var result = await MessageRepository.GetGuildUserMessageCountByChannel(UserGuild.Id, userId, timespan); - var colors = ColorUtils.GetRainbowColors(result.Count); - - var i = 0; - var mapped = result.Select(x => new - { - Name = x.ChannelName, - Count = x.MessageCount, - Color = colors[i++].ToString() - }) - .OrderByDescending(x => x.Count) - .ToList(); - - return Ok(mapped); - } - } -} diff --git a/Modix/Extensions/FilterParameterExtensions.cs b/Modix/Extensions/FilterParameterExtensions.cs deleted file mode 100644 index 21f4eb916..000000000 --- a/Modix/Extensions/FilterParameterExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Linq; - -using Modix.Data.Utilities; -using Modix.Models; - -namespace Modix.Extensions -{ - public static class FilterParameterExtensions - { - public static string GetFieldValue(this FilterParameter[] filterParameters, string propertyName) - => filterParameters.FirstOrDefault(x => x.Field.OrdinalEquals(propertyName))?.Value; - } -} diff --git a/Modix/LogFilesAuthorizationMiddleware.cs b/Modix/LogFilesAuthorizationMiddleware.cs index 8435e98f6..1d31d32ae 100644 --- a/Modix/LogFilesAuthorizationMiddleware.cs +++ b/Modix/LogFilesAuthorizationMiddleware.cs @@ -37,7 +37,6 @@ private static readonly IReadOnlyCollection _maintainerUserIds 135910101667020800, // Cisien#9278 297508715408654336, // distilld#1111 137791696325836800, // JakenVeina#1758 - 123668790155280384, // jmazouri#1277 213437573618597888, // Scott#9000 104975006542372864, // patrickk#0001 }; diff --git a/Modix/Mappings/FilterParametersToInfractionSearchCriteriaMapper.cs b/Modix/Mappings/FilterParametersToInfractionSearchCriteriaMapper.cs deleted file mode 100644 index 48d9af034..000000000 --- a/Modix/Mappings/FilterParametersToInfractionSearchCriteriaMapper.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Modix.Data.Models.Moderation; -using Modix.Extensions; -using Modix.Models; - -namespace Modix.Mappings -{ - public static class FilterParametersToInfractionSearchCriteriaMapper - { - public static InfractionSearchCriteria ToInfractionSearchCriteria(this FilterParameter[] filterParameters) - { - return new InfractionSearchCriteria() - { - Id = filterParameters.GetFieldValue("id")?.ToLong(), - Types = filterParameters.GetFieldValue("type")?.ToInfractionTypes(), - Subject = filterParameters.GetFieldValue("subject")?.ToStringIfNotUlong(), - SubjectId = filterParameters.GetFieldValue("subject")?.ToUlong(), - Creator = filterParameters.GetFieldValue("creator")?.ToStringIfNotUlong(), - CreatedById = filterParameters.GetFieldValue("creator")?.ToUlong(), - }; - } - } -} diff --git a/Modix/Mappings/SortParameterToInfractionSummarySortingCriteriaMapper.cs b/Modix/Mappings/SortParameterToInfractionSummarySortingCriteriaMapper.cs deleted file mode 100644 index dafbc1a00..000000000 --- a/Modix/Mappings/SortParameterToInfractionSummarySortingCriteriaMapper.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Linq; - -using Modix.Data.Models; -using Modix.Data.Models.Moderation; -using Modix.Data.Utilities; -using Modix.Models; - -namespace Modix.Mappings -{ - public static class SortParameterToInfractionSummarySortingCriteriaMapper - { - public static SortingCriteria[] ToInfractionSummarySortingCriteria(this SortParameter sortParameter) - { - var sortProperty = InfractionSummary.SortablePropertyNames.FirstOrDefault(x => x.OrdinalEquals(sortParameter.Field)); - - if (sortProperty is null) - return null; - - return new[] { new SortingCriteria() - { - PropertyName = sortProperty, - Direction = sortParameter.Direction, - }}; - } - } -} diff --git a/Modix/Mappings/StringToInfractionTypesMapper.cs b/Modix/Mappings/StringToInfractionTypesMapper.cs deleted file mode 100644 index 02c4c2702..000000000 --- a/Modix/Mappings/StringToInfractionTypesMapper.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -using Modix.Data.Models.Moderation; - -namespace Modix.Mappings -{ - public static class StringToInfractionTypesMapper - { - public static InfractionType[] ToInfractionTypes(this string value) - => Enum.TryParse(value, out var parsed) - ? new[] { parsed } - : null; - } -} diff --git a/Modix/Mappings/StringToLongMapper.cs b/Modix/Mappings/StringToLongMapper.cs deleted file mode 100644 index 11326b0e4..000000000 --- a/Modix/Mappings/StringToLongMapper.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Modix.Mappings -{ - public static class StringToLongMapper - { - public static long? ToLong(this string value) - => long.TryParse(value, out var parsed) - ? parsed - : (long?)null; - } -} diff --git a/Modix/Mappings/StringToStringIfNotUlongMapper.cs b/Modix/Mappings/StringToStringIfNotUlongMapper.cs deleted file mode 100644 index 75caf93a6..000000000 --- a/Modix/Mappings/StringToStringIfNotUlongMapper.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Modix.Mappings -{ - public static class StringToStringIfNotUlongMapper - { - public static string ToStringIfNotUlong(this string value) - => ulong.TryParse(value, out var parsed) - ? null - : value; - } -} diff --git a/Modix/Mappings/StringToUlongMapper.cs b/Modix/Mappings/StringToUlongMapper.cs deleted file mode 100644 index bc5e7e823..000000000 --- a/Modix/Mappings/StringToUlongMapper.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Modix.Mappings -{ - public static class StringToUlongMapper - { - public static ulong? ToUlong(this string value) - => ulong.TryParse(value, out var parsed) - ? parsed - : (ulong?)null; - } -} diff --git a/Modix/Mappings/TableParametersToPagingCriteriaMapper.cs b/Modix/Mappings/TableParametersToPagingCriteriaMapper.cs deleted file mode 100644 index 057bc4a85..000000000 --- a/Modix/Mappings/TableParametersToPagingCriteriaMapper.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Modix.Data.Models; -using Modix.Models; - -namespace Modix.Mappings -{ - public static class TableParametersToPagingCriteriaMapper - { - public static PagingCriteria ToPagingCriteria(this TableParameters tableParameters) - => new PagingCriteria() - { - FirstRecordIndex = tableParameters.Page * tableParameters.PerPage, - PageSize = tableParameters.PerPage, - }; - } -} diff --git a/Modix/Models/DeletedMessageAbstraction.cs b/Modix/Models/DeletedMessageAbstraction.cs deleted file mode 100644 index 0d1974175..000000000 --- a/Modix/Models/DeletedMessageAbstraction.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Discord; -using Humanizer.Bytes; -using Modix.Data.Models.Moderation; -using Modix.Services.Utilities; - -namespace Modix.Models -{ - public class DeletedMessageAbstraction - { - public ulong MessageId { get; set; } - public string Username { get; set; } - public DateTimeOffset? SentTime { get; set; } - public string Content { get; set; } - public string Url { get; set; } - - public static DeletedMessageAbstraction FromIMessage(IMessage msg) - { - string content = msg.Content; - - if (string.IsNullOrWhiteSpace(content)) - { - if (msg.Embeds.Any()) - { - content = $"Embed: {msg.Embeds.First().Title}: {msg.Embeds.First().Description}"; - } - else if (msg.Attachments.Any()) - { - content = $"Attachment: {msg.Attachments.First().Filename} {ByteSize.FromBytes(msg.Attachments.First().Size)}"; - } - } - - return new DeletedMessageAbstraction - { - MessageId = msg.Id, - Username = msg.Author.GetDisplayName(), - Content = content, - SentTime = msg.CreatedAt, - Url = msg.GetJumpUrl() - }; - } - - public static DeletedMessageAbstraction FromSummary(DeletedMessageSummary msg) - { - return new DeletedMessageAbstraction - { - MessageId = msg.MessageId, - Username = msg.Author.GetFullUsername(), - Content = msg.Content, - SentTime = null, - Url = null - }; - } - } -} diff --git a/Modix/Models/DesignatedChannelApiData.cs b/Modix/Models/DesignatedChannelApiData.cs deleted file mode 100644 index 9479e91b3..000000000 --- a/Modix/Models/DesignatedChannelApiData.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Modix.Data.Models.Core; - -namespace Modix.Models -{ - public class DesignatedChannelApiData - { - public long Id { get; set; } - public ulong ChannelId { get; set; } - public DesignatedChannelType ChannelDesignation { get; set; } - public string Name { get; set; } - } -} diff --git a/Modix/Models/DesignatedChannelCreationData.cs b/Modix/Models/DesignatedChannelCreationData.cs deleted file mode 100644 index 65efd6f16..000000000 --- a/Modix/Models/DesignatedChannelCreationData.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using Modix.Data.Models.Core; - -namespace Modix.Models -{ - public class DesignatedChannelCreationData - { - public ulong ChannelId { get; set; } - public List ChannelDesignations { get; set; } - } -} diff --git a/Modix/Models/DesignatedRoleApiData.cs b/Modix/Models/DesignatedRoleApiData.cs deleted file mode 100644 index 02640faed..000000000 --- a/Modix/Models/DesignatedRoleApiData.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Modix.Data.Models.Core; - -namespace Modix.Models -{ - public class DesignatedRoleApiData - { - public long Id { get; set; } - public ulong RoleId { get; set; } - public DesignatedRoleType RoleDesignation { get; set; } - public string Name { get; set; } - } -} diff --git a/Modix/Models/DesignatedRoleCreationData.cs b/Modix/Models/DesignatedRoleCreationData.cs deleted file mode 100644 index 29259c9c8..000000000 --- a/Modix/Models/DesignatedRoleCreationData.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using Modix.Data.Models.Core; - -namespace Modix.Models -{ - public class DesignatedRoleCreationData - { - public ulong RoleId { get; set; } - public List RoleDesignations { get; set; } - } -} diff --git a/Modix/Models/FilterParameter.cs b/Modix/Models/FilterParameter.cs deleted file mode 100644 index 5ac07fcd8..000000000 --- a/Modix/Models/FilterParameter.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Modix.Models -{ - public class FilterParameter - { - public string Field { get; set; } - - public string Value { get; set; } - } -} diff --git a/Modix/Models/GuildStatApiData.cs b/Modix/Models/GuildStatApiData.cs deleted file mode 100644 index faf60f29f..000000000 --- a/Modix/Models/GuildStatApiData.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; -using Modix.Data.Models.Core; -using Modix.Services.GuildStats; - -namespace Modix.Models -{ - public class GuildStatApiData - { - public string GuildName { get; set; } - - public List GuildRoleCounts { get; set; } - - public IReadOnlyCollection TopUserMessageCounts { get; set; } - } -} diff --git a/Modix/Models/InfractionCreationData.cs b/Modix/Models/InfractionCreationData.cs deleted file mode 100644 index a36600f77..000000000 --- a/Modix/Models/InfractionCreationData.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Modix.Models -{ - public class InfractionCreationData - { - public string Type { get; set; } - - public string Reason { get; set; } - - public int? DurationMonths { get; set; } - - public int? DurationDays { get; set; } - - public int? DurationHours { get; set; } - - public int? DurationMinutes { get; set; } - - public int? DurationSeconds { get; set; } - } -} diff --git a/Modix/Models/InfractionData.cs b/Modix/Models/InfractionData.cs deleted file mode 100644 index a244d2063..000000000 --- a/Modix/Models/InfractionData.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; - -using Modix.Data.Models.Core; -using Modix.Data.Models.Moderation; - -namespace Modix.Models -{ - public class InfractionData - { - public long Id { get; set; } - - public ulong GuildId { get; set; } - - public InfractionType Type { get; set; } - - public string Reason { get; set; } - - public TimeSpan? Duration { get; set; } - - public GuildUserBrief Subject { get; set; } - - public ModerationActionBrief CreateAction { get; set; } - - public ModerationActionBrief RescindAction { get; set; } - - public ModerationActionBrief DeleteAction { get; set; } - - public bool CanRescind { get; set; } - - public bool CanDelete { get; set; } - } -} diff --git a/Modix/Models/ModixUser.cs b/Modix/Models/ModixUser.cs index 93c17553f..98a8fc0d6 100644 --- a/Modix/Models/ModixUser.cs +++ b/Modix/Models/ModixUser.cs @@ -16,13 +16,14 @@ public class ModixUser public static ModixUser FromClaimsPrincipal(ClaimsPrincipal user) { - if (user?.Identity?.Name == null) { return null; } + if (user?.Identity?.Name == null) + { return null; } var ret = new ModixUser { Name = user.Identity.Name, UserId = ulong.Parse(user.Claims.FirstOrDefault(d => d.Type == ClaimTypes.NameIdentifier).Value), - Claims = user.Claims.Where(d=>d.Type == ClaimTypes.Role).Select(d=>d.Value).ToList() + Claims = user.Claims.Where(d => d.Type == ClaimTypes.Role).Select(d => d.Value).ToList() }; return ret; diff --git a/Modix/Models/PromotionCommentData.cs b/Modix/Models/PromotionCommentData.cs deleted file mode 100644 index 4408a631c..000000000 --- a/Modix/Models/PromotionCommentData.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Modix.Data.Models.Promotions; - -namespace Modix.Models -{ - public class PromotionCommentData - { - public string Body { get; set; } - public PromotionSentiment Sentiment { get; set; } - } -} diff --git a/Modix/Models/PromotionCreationData.cs b/Modix/Models/PromotionCreationData.cs deleted file mode 100644 index 3f3e46970..000000000 --- a/Modix/Models/PromotionCreationData.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Modix.Models -{ - public class PromotionCreationData - { - public ulong UserId { get; set; } - public string Comment { get; set; } - } -} diff --git a/Modix/Models/RoleClaimModifyData.cs b/Modix/Models/RoleClaimModifyData.cs deleted file mode 100644 index 10a138cf7..000000000 --- a/Modix/Models/RoleClaimModifyData.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Modix.Data.Models.Core; - -namespace Modix.Models -{ - public class RoleClaimModifyData - { - public AuthorizationClaim Claim { get; set; } - public ClaimMappingType? MappingType { get; set; } - public ulong RoleId { get; set; } - } -} diff --git a/Modix/Models/SortParameter.cs b/Modix/Models/SortParameter.cs deleted file mode 100644 index 89b458e6f..000000000 --- a/Modix/Models/SortParameter.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Modix.Data.Models; - -namespace Modix.Models -{ - public class SortParameter - { - public string Field { get; set; } - - public SortDirection Direction { get; set; } - } -} diff --git a/Modix/Models/TableParameters.cs b/Modix/Models/TableParameters.cs deleted file mode 100644 index c3047002b..000000000 --- a/Modix/Models/TableParameters.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Modix.Models -{ - public class TableParameters - { - public int Page { get; set; } - - public int PerPage { get; set; } - - public SortParameter Sort { get; set; } - - public FilterParameter[] Filters { get; set; } - } -} diff --git a/Modix/Models/Tags/TagCreationData.cs b/Modix/Models/Tags/TagCreationData.cs deleted file mode 100644 index 0fb8483a9..000000000 --- a/Modix/Models/Tags/TagCreationData.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Modix.Models.Tags -{ - public class TagCreationData - { - public string Content { get; set; } - } -} diff --git a/Modix/Models/Tags/TagData.cs b/Modix/Models/Tags/TagData.cs deleted file mode 100644 index 4aa9b1a48..000000000 --- a/Modix/Models/Tags/TagData.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using Modix.Data.Models.Core; -using Modix.Data.Models.Tags; - -namespace Modix.Models.Tags -{ - public class TagData - { - public string Name { get; set; } - - public DateTimeOffset Created { get; set; } - - public bool IsOwnedByRole { get; set; } - - public GuildUserBrief OwnerUser { get; set; } - - public GuildRoleBrief OwnerRole { get; set; } - - public string Content { get; set; } - - public uint Uses { get; set; } - - public bool CanMaintain { get; set; } - - internal TagSummary TagSummary { get; set; } - } -} diff --git a/Modix/Models/Tags/TagMutationData.cs b/Modix/Models/Tags/TagMutationData.cs deleted file mode 100644 index 17263e7dd..000000000 --- a/Modix/Models/Tags/TagMutationData.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Modix.Models.Tags -{ - public class TagMutationData - { - public string Content { get; set; } - } -} diff --git a/Modix/Modix.csproj b/Modix/Modix.csproj index e731ad0d9..cf0c3ee88 100644 --- a/Modix/Modix.csproj +++ b/Modix/Modix.csproj @@ -1,22 +1,5 @@  - - Latest - false - ClientApp\ - $(DefaultItemExcludes);$(SpaRoot)node_modules\** - - - - build-dev - build - false - - - - - - @@ -27,28 +10,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -65,78 +26,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %(DistFiles.Identity) - PreserveNewest - - - - - + \ No newline at end of file diff --git a/Modix/Program.cs b/Modix/Program.cs index a79dae8c5..eec2a2644 100644 --- a/Modix/Program.cs +++ b/Modix/Program.cs @@ -49,27 +49,13 @@ public static int Main(string[] args) ConfigureServices(builder, builtConfig, config); - if (config.UseBlazor) - { - builder.Services.ConfigureBlazorServices(); - } - else - { - ConfigureVueServices(builder.Services); - } + builder.Services.ConfigureBlazorServices(); var host = builder.Build(); ConfigureCommon(host); - if (config.UseBlazor) - { - host.ConfigureBlazorApplication(); - } - else - { - ConfigureVueApplication(host); - } + host.ConfigureBlazorApplication(); try { @@ -115,18 +101,6 @@ private static void ConfigureServices(WebApplicationBuilder builder, IConfigurat rollingInterval: RollingInterval.Day, retainedFileCountLimit: 2); - var seqEndpoint = modixConfig.SeqEndpoint; - var seqKey = modixConfig.SeqKey; - - if (seqEndpoint != null && seqKey == null) // seq is enabled without a key - { - lc.WriteTo.Seq(seqEndpoint); - } - else if (seqEndpoint != null && seqKey != null) //seq is enabled with a key - { - lc.WriteTo.Seq(seqEndpoint, apiKey: seqKey); - } - var webhookId = modixConfig.LogWebhookId; var webhookToken = modixConfig.LogWebhookToken; if (webhookId.HasValue && webhookToken != null) @@ -174,46 +148,6 @@ private static void ConfigureServices(WebApplicationBuilder builder, IConfigurat }); } - public static void ConfigureVueServices(IServiceCollection services) - { - services.AddMvc(d => d.EnableEndpointRouting = false) - .AddNewtonsoftJson(options => - { - options.SerializerSettings.Converters.Add(new StringEnumConverter()); - options.SerializerSettings.Converters.Add(new StringULongConverter()); - }); - } - - public static void ConfigureVueApplication(WebApplication app) - { - if (app.Environment.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - - //Map to static files when not hitting the API - app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api"), builder => - { - //Tiny middleware to redirect invalid requests to index.html, - //this ensures that our frontend routing works on fresh requests - builder.Use(async (context, next) => - { - await next(); - if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value)) - { - context.Request.Path = "/index.html"; - await next(); - } - }) - .UseDefaultFiles() - .UseStaticFiles(); - }); - - //Defer to MVC for anything that doesn't match (and ostensibly - //starts with /api) - app.UseMvcWithDefaultRoute(); - } - public static void ConfigureCommon(WebApplication app) { const string logFilesRequestPath = "/logfiles"; @@ -233,9 +167,6 @@ public static void ConfigureCommon(WebApplication app) { builder.Run(handler => { - //TODO: Maybe un-hardcode this? - //handler.Response.StatusCode = StatusCodes - handler.Response.Redirect("https://aka.ms/csharp-discord"); return Task.CompletedTask; }); From 453a53caedcf770eb387084bd7af337105277e17 Mon Sep 17 00:00:00 2001 From: Patrick Klaeren Date: Tue, 26 Mar 2024 18:36:47 +0000 Subject: [PATCH 2/3] Update Dockerfile to remove Node --- Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index d660ecede..0ae216b97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,10 +3,6 @@ WORKDIR /app FROM mcr.microsoft.com/dotnet/sdk:8.0 AS dotnet-build-base WORKDIR /src -RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600\n' > /etc/apt/preferences.d/nodesource -RUN apt-get update && apt-get install curl -y \ - && curl -sL https://deb.nodesource.com/setup_14.x | bash -\ - && apt-get install nodejs -y COPY Modix.sln . COPY Directory.* . COPY **/*.csproj ./ From 9c7381e9e19f2a5c51991ddb53da08f3c414604d Mon Sep 17 00:00:00 2001 From: Patrick Klaeren Date: Tue, 26 Mar 2024 18:43:02 +0000 Subject: [PATCH 3/3] Add Docker stack, remove Seq package update reference --- Directory.Build.targets | 1 - Modix.sln | 1 + docker-stack.yml | 63 ----------------------------------------- 3 files changed, 1 insertion(+), 64 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 629400e99..859258bab 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -49,7 +49,6 @@ - diff --git a/Modix.sln b/Modix.sln index a4c0d56b9..88b237abc 100644 --- a/Modix.sln +++ b/Modix.sln @@ -18,6 +18,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .editorconfig = .editorconfig Directory.Build.props = Directory.Build.props Directory.Build.targets = Directory.Build.targets + docker-stack.yml = docker-stack.yml Dockerfile = Dockerfile readme.md = readme.md EndProjectSection diff --git a/docker-stack.yml b/docker-stack.yml index b377ed770..4ca08c3fe 100644 --- a/docker-stack.yml +++ b/docker-stack.yml @@ -76,8 +76,6 @@ services: MODIX_LogWebhookId: '382609729802862592' MODIX_ReplUrl: http://repl:31337/eval MODIX_IlUrl: http://repl:31337/il - MODIX_SeqEndpoint: http://seq:5341 - MODIX_UseBlazor: 'True' deploy: mode: replicated replicas: 1 @@ -98,8 +96,6 @@ services: target: DbConnection - source: log-webhook-token target: LogWebhookToken - - source: modix-seq-key - target: SeqKey volumes: - modix-keys:/app/dataprotection - modix-logs:/app/logs @@ -173,54 +169,6 @@ services: - grafana-data:/gfdata:rw networks: - proxy - -# log viewer/aggregator - seq: - image: datalust/seq:latest - environment: - - ACCEPT_EULA=Y - - SEQ_CACHE_SYSTEMRAMTARGET=0.7 - deploy: - mode: replicated - replicas: 1 - resources: - limits: - cpus: '3' - memory: 4G - reservations: - cpus: '0.5' - memory: 1G - update_config: - parallelism: 1 - delay: 0s - order: stop-first - restart_policy: - condition: any - delay: 0s - volumes: - - seq-data:/data - networks: - - modix - - repl - - proxy - - seq - -# receives docker logs with the gelf docker log driver - seq-input-gelf: - image: datalust/seq-input-gelf:latest - environment: - - SEQ_ADDRESS=http://seq:5341 - deploy: - mode: replicated - replicas: 1 - restart_policy: - condition: any - delay: 0s - ports: - - "12201:12201/udp" - networks: - - repl - - seq # monitors the health check (specifically of REPL) and restarts the container autoheal: @@ -234,7 +182,6 @@ networks: proxy: repl: modix: - seq: modix-20: portainer_agent_network: external: @@ -250,8 +197,6 @@ secrets: external: true log-webhook-token: external: true - modix-seq-key: - external: true azure-translation-service-key-a: external: true modix-dev-token: @@ -264,8 +209,6 @@ secrets: external: true modix-20-web-token-signing-secret: external: true - modix-20-seq-key: - external: true volumes: pgadmin-data: @@ -275,12 +218,6 @@ volumes: modix-keys: modix-logs: modix-20-keys: - - seq-data: - driver_opts: - type: local - o: bind - device: /data/1/seq #workaround for swarm not supporting tmpfs mounts repl-tmp: