From ce2132f763ffe11da00a9fc4edc83e9bf0ce307d Mon Sep 17 00:00:00 2001 From: Omid Date: Tue, 12 Dec 2017 23:25:05 +0200 Subject: [PATCH 1/3] Change Markdown to Markdig and enable andvance configs --- src/DotNetBlog.Core/DotNetBlog.Core.csproj | 17 +++++----- src/DotNetBlog.Core/Service/TopicService.cs | 2 +- .../Utilities/MarkdownUtils.cs | 31 +++++++++++++++++++ src/DotNetBlog.Web/DotNetBlog.Web.csproj | 12 ++++--- .../Properties/PublishProfiles/release.pubxml | 2 ++ .../TagHelpers/MarkdownTagHelper.cs | 3 +- .../Home/Components/PageWidget/Default.cshtml | 2 +- 7 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 src/DotNetBlog.Core/Utilities/MarkdownUtils.cs diff --git a/src/DotNetBlog.Core/DotNetBlog.Core.csproj b/src/DotNetBlog.Core/DotNetBlog.Core.csproj index 570916c..1c211db 100644 --- a/src/DotNetBlog.Core/DotNetBlog.Core.csproj +++ b/src/DotNetBlog.Core/DotNetBlog.Core.csproj @@ -5,24 +5,23 @@ netstandard2.0 DotNetBlog.Core DotNetBlog.Core - $(PackageTargetFallback);dotnet5.6;dnxcore50;portable-net45+win8 false false false - - + + + - - - + + + - - + + - diff --git a/src/DotNetBlog.Core/Service/TopicService.cs b/src/DotNetBlog.Core/Service/TopicService.cs index 9e043fb..b9ab276 100644 --- a/src/DotNetBlog.Core/Service/TopicService.cs +++ b/src/DotNetBlog.Core/Service/TopicService.cs @@ -569,7 +569,7 @@ private string GenerateSummary(string summary, string content) return string.Empty; } - return CommonMark.CommonMarkConverter.Convert(summary).TrimHtml().ToLength(200); + return summary.FromMarkdown().TrimHtml().ToLength(200); } public bool CanComment(Topic entity) diff --git a/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs b/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs new file mode 100644 index 0000000..8db6255 --- /dev/null +++ b/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs @@ -0,0 +1,31 @@ +using Markdig; +using System; +using System.Collections.Generic; +using System.Text; + +namespace DotNetBlog +{ + public static class MarkdownUtils + { + private static MarkdownPipeline pipeline; + + static MarkdownUtils() + { + var builder = new MarkdownPipelineBuilder() + .UsePipeTables(new Markdig.Extensions.Tables.PipeTableOptions + { + RequireHeaderSeparator = false + }) + .UseAdvancedExtensions() + .UseBootstrap(); + + pipeline = builder.Build(); + } + + public static string FromMarkdown(this string markdown) + { + return Markdown.ToHtml(markdown, pipeline); + } + + } +} diff --git a/src/DotNetBlog.Web/DotNetBlog.Web.csproj b/src/DotNetBlog.Web/DotNetBlog.Web.csproj index 21e08c5..212dfae 100644 --- a/src/DotNetBlog.Web/DotNetBlog.Web.csproj +++ b/src/DotNetBlog.Web/DotNetBlog.Web.csproj @@ -3,12 +3,13 @@ 1.2.0 netcoreapp2.0 + true true + false DotNetBlog.Web Exe DotNetBlog.Web 2.0 - $(PackageTargetFallback);dotnet5.6;dnxcore50;portable-net45+win8 @@ -39,12 +40,13 @@ - + + + - + - - + diff --git a/src/DotNetBlog.Web/Properties/PublishProfiles/release.pubxml b/src/DotNetBlog.Web/Properties/PublishProfiles/release.pubxml index af7d949..f82aa4b 100644 --- a/src/DotNetBlog.Web/Properties/PublishProfiles/release.pubxml +++ b/src/DotNetBlog.Web/Properties/PublishProfiles/release.pubxml @@ -15,5 +15,7 @@ True .\bin\Release\PublishOutput True + netcoreapp2.0 + 89f9b8c8-2f34-41cf-b39e-c23935afadc8 \ No newline at end of file diff --git a/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs index 4c922bc..2c41e1c 100644 --- a/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs @@ -4,7 +4,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Runtime.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers; -using CommonMark; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; @@ -32,7 +31,7 @@ public override async Task ProcessAsync(TagHelperContext context, TagHelperOutpu output.TagName = ""; - string html = CommonMarkConverter.Convert(content); + string html = content.FromMarkdown(); output.Content.SetHtmlContent(html); } diff --git a/src/DotNetBlog.Web/Themes/default/Home/Components/PageWidget/Default.cshtml b/src/DotNetBlog.Web/Themes/default/Home/Components/PageWidget/Default.cshtml index 7dade8c..981173b 100644 --- a/src/DotNetBlog.Web/Themes/default/Home/Components/PageWidget/Default.cshtml +++ b/src/DotNetBlog.Web/Themes/default/Home/Components/PageWidget/Default.cshtml @@ -10,7 +10,7 @@ @foreach (var page in Model) {
  • - @page.Title + @(page.Title)
  • } From ad2d510c41b1fbad962f96d29bb519f11b14d970 Mon Sep 17 00:00:00 2001 From: Omid Date: Tue, 4 Aug 2020 17:41:58 +0300 Subject: [PATCH 2/3] Migrate to .Net 3.1 and fix bug in editor. --- DotNetBlog.sln | 12 +- global.json | 4 - src/DotNetBlog.Admin/components/editor.jsx | 15 +- src/DotNetBlog.Admin/package-lock.json | 6475 +++++++++++++++++ src/DotNetBlog.Core/ClientManager.cs | 4 +- src/DotNetBlog.Core/Data/BlogContext.cs | 9 +- .../Data/Mappings/CategoryMapping.cs | 6 +- .../Data/Mappings/CategoryTopicMapping.cs | 6 +- .../Data/Mappings/CommentMapping.cs | 6 +- .../Data/Mappings/LinkMapping.cs | 9 +- .../Data/Mappings/PageMapping.cs | 6 +- .../Data/Mappings/SettingMapping.cs | 6 +- .../Data/Mappings/TagMapping.cs | 6 +- .../Data/Mappings/TagTopicMapping.cs | 6 +- .../Data/Mappings/TopicMapping.cs | 6 +- .../Data/Mappings/UserMapping.cs | 6 +- .../Data/Mappings/UserTokenMapping.cs | 6 +- .../Data/Mappings/WidgetMapping.cs | 6 +- src/DotNetBlog.Core/DotNetBlog.Core.csproj | 24 +- src/DotNetBlog.Core/Entity/Category.cs | 7 +- src/DotNetBlog.Core/Entity/CategoryTopic.cs | 7 +- src/DotNetBlog.Core/Entity/Comment.cs | 3 - src/DotNetBlog.Core/Entity/Link.cs | 7 +- src/DotNetBlog.Core/Entity/Page.cs | 3 - src/DotNetBlog.Core/Entity/Setting.cs | 7 +- src/DotNetBlog.Core/Entity/Tag.cs | 7 +- src/DotNetBlog.Core/Entity/TagTopic.cs | 7 +- src/DotNetBlog.Core/Entity/Topic.cs | 3 - src/DotNetBlog.Core/Entity/User.cs | 3 - src/DotNetBlog.Core/Entity/UserToken.cs | 7 +- src/DotNetBlog.Core/Entity/Widget.cs | 7 +- src/DotNetBlog.Core/Enums/CommentStatus.cs | 7 +- src/DotNetBlog.Core/Enums/PageStatus.cs | 7 +- src/DotNetBlog.Core/Enums/TopicStatus.cs | 7 +- src/DotNetBlog.Core/Enums/WidgetType.cs | 7 +- .../Extensions/BlogContextExtensions.cs | 27 +- .../Extensions/MemoryCacheExtensions.cs | 2 - .../Extensions/StringExtensions.cs | 8 +- .../IServiceCollectionExtensions.cs | 10 +- .../Model/Category/CategoryBasicModel.cs | 7 +- .../Model/Category/CategoryModel.cs | 4 - .../Model/Comment/AddCommentModel.cs | 6 +- .../Model/Comment/CommentCountModel.cs | 7 +- .../Model/Comment/CommentItemModel.cs | 7 +- .../Model/Comment/CommentModel.cs | 3 - .../Model/Email/CommentEmailModel.cs | 4 - .../Model/Email/TestEmailConfigModel.cs | 7 +- .../Model/Install/InstallModel.cs | 5 +- src/DotNetBlog.Core/Model/OperationResult.cs | 5 +- .../Model/Page/AddPageModel.cs | 3 - .../Model/Page/EditPageModel.cs | 7 +- .../Model/Page/PageBasicModel.cs | 3 - .../Model/Page/PageCountModel.cs | 7 +- src/DotNetBlog.Core/Model/Page/PageModel.cs | 7 +- .../Model/Setting/SettingModel.cs | 6 +- .../Model/Statistics/BlogStatisticsModel.cs | 7 +- src/DotNetBlog.Core/Model/Tag/TagModel.cs | 4 - src/DotNetBlog.Core/Model/Theme/ThemeModel.cs | 5 +- .../Model/Topic/AddTopicModel.cs | 3 - .../Model/Topic/EditTopicModel.cs | 7 +- .../Model/Topic/ITopicModel.cs | 7 +- .../Model/Topic/MonthStatisticsModel.cs | 3 - .../Model/Topic/TopicBasicModel.cs | 7 +- .../Model/Topic/TopicCountModel.cs | 7 +- src/DotNetBlog.Core/Model/Topic/TopicModel.cs | 3 - .../Model/Widget/AvailableWidgetModel.cs | 7 +- .../Model/Widget/WidgetConfigModel.cs | 11 +- .../Model/Widget/WidgetModel.cs | 4 - .../Properties/AssemblyInfo.cs | 1 - src/DotNetBlog.Core/Service/AuthService.cs | 10 +- .../Service/CategoryService.cs | 15 +- src/DotNetBlog.Core/Service/CommentService.cs | 26 +- src/DotNetBlog.Core/Service/EmailService.cs | 12 +- src/DotNetBlog.Core/Service/InstallService.cs | 15 +- src/DotNetBlog.Core/Service/PageService.cs | 38 +- src/DotNetBlog.Core/Service/SettingService.cs | 15 +- .../Service/StatisticsService.cs | 21 +- src/DotNetBlog.Core/Service/TagService.cs | 10 +- src/DotNetBlog.Core/Service/ThemeService.cs | 3 - src/DotNetBlog.Core/Service/TopicService.cs | 47 +- src/DotNetBlog.Core/Service/UserService.cs | 9 +- src/DotNetBlog.Core/Service/WidgetService.cs | 17 +- .../Utilities/EncryptHelper.cs | 3 - .../Utilities/MarkdownUtils.cs | 3 - .../Api/Controllers/CategoryController.cs | 10 +- .../Api/Controllers/CommentController.cs | 13 +- .../Areas/Api/Controllers/ConfigController.cs | 40 +- .../Areas/Api/Controllers/ControllerBase.cs | 24 +- .../Areas/Api/Controllers/MyController.cs | 5 +- .../Areas/Api/Controllers/PageController.cs | 13 +- .../Api/Controllers/StatisticsController.cs | 3 - .../Areas/Api/Controllers/TagController.cs | 9 +- .../Areas/Api/Controllers/TopicController.cs | 17 +- .../Areas/Api/Controllers/UploadController.cs | 7 +- .../Areas/Api/Controllers/WidgetController.cs | 3 +- .../Areas/Api/Filters/ErrorHandlerFilter.cs | 14 +- .../Api/Filters/RequireLoginApiFilter.cs | 8 +- .../Api/Filters/ValidateRequestApiFilter.cs | 6 +- .../Areas/Api/Models/ApiResponse.cs | 5 +- .../Models/Category/RemoveCategoryModel.cs | 7 +- .../Api/Models/Category/SaveCategoryModel.cs | 6 +- .../Areas/Api/Models/Comment/BatchModel.cs | 6 +- .../Api/Models/Comment/QueryCommentModel.cs | 7 +- .../Api/Models/Comment/ReplyCommentModel.cs | 6 +- .../Api/Models/Config/AdvanceConfigModel.cs | 6 +- .../Api/Models/Config/BasicConfigModel.cs | 3 - .../Api/Models/Config/CommentConfigModel.cs | 7 +- .../Api/Models/Config/EmailConfigModel.cs | 7 +- .../Areas/Api/Models/My/EditMyInfoModel.cs | 6 +- .../Areas/Api/Models/Page/BatchModel.cs | 6 +- .../Areas/Api/Models/Tag/DeleteTagModel.cs | 6 +- .../Areas/Api/Models/Tag/QueryTagModel.cs | 3 - .../Areas/Api/Models/Tag/SaveTagModel.cs | 6 +- .../Areas/Api/Models/Topic/BatchModel.cs | 6 +- .../Areas/Api/Models/Topic/QueryTopicModel.cs | 3 - .../Api/Models/Upload/UploadImageModel.cs | 4 - .../Api/Models/Widget/SaveWidgetModel.cs | 7 +- src/DotNetBlog.Web/AutoMapperConfig.cs | 22 +- .../Controllers/AccountController.cs | 7 +- .../Controllers/AdminController.cs | 4 - .../Controllers/ExceptionController.cs | 4 - .../Controllers/HomeController.cs | 20 +- .../Controllers/InstallController.cs | 18 +- .../Controllers/QuickActionController.cs | 6 +- src/DotNetBlog.Web/DotNetBlog.Web.csproj | 22 +- .../Filters/ErrorHandleFilter.cs | 2 +- .../Filters/RequireLoginFilter.cs | 12 +- .../Filters/ValidateRequestFilter.cs | 8 +- .../Middlewares/ClientManagerMiddleware.cs | 7 +- src/DotNetBlog.Web/Program.cs | 28 +- .../Properties/launchSettings.json | 2 +- .../MonthStatisticsWidget/Default.en-GB.resx | 2 +- .../MonthStatisticsWidget/Default.zh-CN.resx | 2 +- src/DotNetBlog.Web/Startup.cs | 103 +- .../TagHelpers/BlogTitleTagHelper.cs | 10 +- .../TagHelpers/MarkdownTagHelper.cs | 8 +- .../TagHelpers/PageLinkTagHelper.cs | 6 +- .../TagHelpers/PagerTagHelper.cs | 10 +- .../TagHelpers/ThemeUrlResolutionTagHelper.cs | 2 - .../TagHelpers/TopicLinkTagHelper.cs | 7 +- .../TagHelpers/VisibleTagHelper.cs | 9 +- .../MonthStatisticsWidget/Default.cshtml | 4 +- .../Themes/default/Home/_Layout.cshtml | 2 +- src/DotNetBlog.Web/Themes/default/theme.json | 4 +- .../ViewComponents/PageListNav.cs | 3 - src/DotNetBlog.Web/ViewComponents/Widgets.cs | 3 - .../ThemeResourceLocalizationFactory.cs | 23 + .../ViewEngines/ThemeViewEngine.cs | 8 +- .../ViewModels/Account/ChangePasswordModel.cs | 6 +- .../Account/ChangePasswordViewModel.cs | 7 +- .../ViewModels/Account/LoginModel.cs | 6 +- .../ViewModels/Account/LoginViewModel.cs | 7 +- .../ViewModels/Exception/ErrorViewModel.cs | 7 +- .../ViewModels/Home/CategoryPageViewModel.cs | 4 - .../ViewModels/Home/CommentFormModel.cs | 7 +- .../ViewModels/Home/CommentListViewModel.cs | 4 - .../ViewModels/Home/IndexPageViewModel.cs | 8 +- .../ViewModels/Home/MonthPageViewModel.cs | 7 +- .../ViewModels/Home/NoticePageViewModel.cs | 7 +- .../ViewModels/Home/SearchPageViewModel.cs | 7 +- .../ViewModels/Home/TagPageViewModel.cs | 7 +- .../ViewModels/Home/TopicListModel.cs | 3 - .../ViewModels/Home/TopicPageViewModel.cs | 3 - .../ViewModels/Install/IndexViewModel.cs | 4 - .../Widgets/AdministrationWidget.cs | 4 - src/DotNetBlog.Web/Widgets/CategoryWidget.cs | 2 - .../Widgets/MonthStatisticsWidget.cs | 3 - src/DotNetBlog.Web/Widgets/PageWidget.cs | 3 - .../Widgets/RecentCommentWidget.cs | 3 - .../Widgets/RecentTopicWidget.cs | 3 - src/DotNetBlog.Web/Widgets/SearchWidget.cs | 4 - src/DotNetBlog.Web/Widgets/TagWidget.cs | 2 - src/DotNetBlog.Web/bundleconfig.json | 8 + src/DotNetBlog.Web/libman.json | 5 + .../wwwroot/lib/editor.md/editormd.js | 16 +- .../wwwroot/lib/editor.md/editormd.min.js | 15 +- 176 files changed, 6981 insertions(+), 997 deletions(-) delete mode 100644 global.json create mode 100644 src/DotNetBlog.Admin/package-lock.json create mode 100644 src/DotNetBlog.Web/ViewEngines/ThemeResourceLocalizationFactory.cs create mode 100644 src/DotNetBlog.Web/bundleconfig.json create mode 100644 src/DotNetBlog.Web/libman.json diff --git a/DotNetBlog.sln b/DotNetBlog.sln index ab8ccf6..881e95b 100644 --- a/DotNetBlog.sln +++ b/DotNetBlog.sln @@ -1,15 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26403.3 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30309.148 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9728357A-237B-4337-A648-6F56FE479A6F}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{61946056-1D5C-4774-B0D8-8FABADBDBE81}" - ProjectSection(SolutionItems) = preProject - global.json = global.json - EndProjectSection -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetBlog.Web", "src\DotNetBlog.Web\DotNetBlog.Web.csproj", "{89F9B8C8-2F34-41CF-B39E-C23935AFADC8}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetBlog.Core", "src\DotNetBlog.Core\DotNetBlog.Core.csproj", "{89065586-C5EF-4EF4-BCD5-63D47E6E3816}" @@ -62,4 +57,7 @@ Global {89065586-C5EF-4EF4-BCD5-63D47E6E3816} = {9728357A-237B-4337-A648-6F56FE479A6F} {D2657CFC-8E57-49BB-9BE9-4FE37599F0E3} = {9728357A-237B-4337-A648-6F56FE479A6F} EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A8BDBED8-2603-4771-8572-3EBAA91BF2E5} + EndGlobalSection EndGlobal diff --git a/global.json b/global.json deleted file mode 100644 index 1d7c06c..0000000 --- a/global.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "projects": [ "src", "test" ], - "sdk": { "version": "2.0.0" } -} \ No newline at end of file diff --git a/src/DotNetBlog.Admin/components/editor.jsx b/src/DotNetBlog.Admin/components/editor.jsx index 8386dfb..4caa802 100644 --- a/src/DotNetBlog.Admin/components/editor.jsx +++ b/src/DotNetBlog.Admin/components/editor.jsx @@ -35,12 +35,12 @@ class Editor extends React.Component{ } }, this.props.options); - this.editor = editormd(this.id, options); + var currentEditor = this.editor = editormd(this.id, options); var lang = "editorLang".L(); + if (lang != "zh-cn") { editormd.loadScript("lib/editor.md/languages/" + lang, function () { - this.editor.lang = editormd.defaults.lang; - this.editor.recreate(); + currentEditor.lang = editormd.defaults.lang; }); } } @@ -49,14 +49,15 @@ class Editor extends React.Component{ return this.editor.markdownTextarea.val(); } - setContent(content){ - this.editor.markdownTextarea.val(content) + setContent(content) { + this.editor.markdownTextarea.val(content); + this.editor.recreate(); } componentDidUpdate(prevProps){ if(prevProps.content != this.props.content){ - if(this.editor){ - this.editor.markdownTextarea.val(this.props.content) + if (this.editor) { + this.setContent(this.props.content) } } } diff --git a/src/DotNetBlog.Admin/package-lock.json b/src/DotNetBlog.Admin/package-lock.json new file mode 100644 index 0000000..9c92d21 --- /dev/null +++ b/src/DotNetBlog.Admin/package-lock.json @@ -0,0 +1,6475 @@ +{ + "name": "app", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@allenfang/react-toastr": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@allenfang/react-toastr/-/react-toastr-2.8.2.tgz", + "integrity": "sha1-C+9lhRieBXHda9/E75i8n5xH2gw=", + "dev": true, + "requires": { + "classnames": "2.2.6", + "element-class": "0.2.2", + "lodash": "4.17.19", + "react": "15.3.2", + "react-addons-update": "15.3.2", + "react-dom": "15.3.2" + }, + "dependencies": { + "react": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.3.2.tgz", + "integrity": "sha1-p7zNL+6K8SawMX4iLCjR1UUo0J4=", + "dev": true, + "requires": { + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, + "react-dom": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.2.tgz", + "integrity": "sha1-xGsKpTgNe4OOelnEp77/LtMVUx8=", + "dev": true + } + } + }, + "@babel/runtime": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.0.tgz", + "integrity": "sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw==", + "dev": true, + "requires": { + "regenerator-runtime": "0.13.7" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + } + } + }, + "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.27", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "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-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "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.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "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-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "4.17.19" + } + }, + "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 + }, + "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": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30001110", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "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.3", + "js-tokens": "3.0.2" + }, + "dependencies": { + "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 + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.7.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.19", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.19", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.3" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.19" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.19" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", + "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "loader-utils": "0.2.17", + "mkdirp": "0.5.5", + "object-assign": "4.1.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-add-module-exports": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", + "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=", + "dev": true + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-dev-expression": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.2.tgz", + "integrity": "sha512-y32lfBif+c2FIh5dwGfcc/IfX5aw/Bru7Du7W2n17sJE/GJGAsmIk5DPW/8JOoeKpXW5evJfJOvRq5xkiS6vng==", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-do-expressions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", + "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-function-bind": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", + "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "6.18.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-do-expressions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", + "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", + "dev": true, + "requires": { + "babel-plugin-syntax-do-expressions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.19" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-function-bind": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", + "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", + "dev": true, + "requires": { + "babel-plugin-syntax-function-bind": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-assign": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz", + "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" + } + }, + "babel-preset-stage-0": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", + "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", + "dev": true, + "requires": { + "babel-plugin-transform-do-expressions": "6.22.0", + "babel-plugin-transform-function-bind": "6.22.0", + "babel-preset-stage-1": "6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "6.24.1", + "babel-plugin-transform-export-extensions": "6.22.0", + "babel-preset-stage-2": "6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.3", + "babel-runtime": "6.26.0", + "core-js": "2.6.11", + "home-or-tmp": "2.0.0", + "lodash": "4.17.19", + "mkdirp": "0.5.5", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.6.11", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.19" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.19" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.3", + "lodash": "4.17.19", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "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.6", + "component-emitter": "1.3.0", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.2", + "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.2" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + } + } + }, + "base62": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz", + "integrity": "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "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 + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true + }, + "bootstrap-tagsinput": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/bootstrap-tagsinput/-/bootstrap-tagsinput-0.7.1.tgz", + "integrity": "sha1-/+Owa74qEGlF7ygUVoAFqU8hGTc=", + "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": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" + } + }, + "browserify-aes": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", + "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", + "dev": true, + "requires": { + "inherits": "2.0.4" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30001110", + "electron-to-chromium": "1.3.518" + } + }, + "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.3.1", + "ieee754": "1.1.13", + "isarray": "1.0.0" + } + }, + "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 + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "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.3.0", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.1", + "to-object-path": "0.3.0", + "union-value": "1.0.1", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30001110", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30001110", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001110.tgz", + "integrity": "sha512-xQfHc6YlMJHJCST7DgbGFztXvXCDb8ueefhATdgWrW0DOvm1b/xjecH3xQZughGklclLkchZzwvPRUu4CTJ4hQ==", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.3", + "fsevents": "1.2.13", + "glob-parent": "2.0.0", + "inherits": "2.0.4", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "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.1", + "static-extend": "0.1.2" + }, + "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.6" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "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.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.4", + "color-convert": "1.9.3", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.3" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "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 + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "dev": true, + "requires": { + "commander": "2.20.3", + "detective": "4.7.1", + "glob": "5.0.15", + "graceful-fs": "4.2.4", + "iconv-lite": "0.4.24", + "mkdirp": "0.5.5", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" + } + }, + "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.44.0" + } + }, + "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.7", + "bytes": "3.0.0", + "compressible": "2.0.18", + "debug": "2.6.9", + "on-headers": "1.0.2", + "safe-buffer": "5.1.2", + "vary": "1.1.2" + } + }, + "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 + }, + "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 + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "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 + }, + "create-react-class": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "dev": true, + "requires": { + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, + "crypto-browserify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", + "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", + "dev": true, + "requires": { + "browserify-aes": "0.4.0", + "pbkdf2-compat": "2.0.1", + "ripemd160": "0.2.0", + "sha.js": "2.2.6" + } + }, + "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-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.23.1.tgz", + "integrity": "sha1-n6I/K1wJZSNZEK1ezvO4o2OQ/lA=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.5.4", + "cssnano": "3.10.0", + "loader-utils": "0.2.17", + "lodash.camelcase": "3.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.2.1", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "source-list-map": "0.1.8" + } + }, + "css-selector-tokenizer": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz", + "integrity": "sha1-E5uv00o1/QwUKEhwSeBpnm9qLCE=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.2" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.3", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.3", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.1", + "postcss-zindex": "2.2.0" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "1.0.4", + "is-date-object": "1.0.2", + "is-regex": "1.1.1", + "object-is": "1.1.2", + "object-keys": "1.1.1", + "regexp.prototype.flags": "1.3.0" + } + }, + "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.1.1" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "5.7.4", + "defined": "1.0.0" + } + }, + "dom-helpers": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz", + "integrity": "sha1-m7SyRfY3NnsfpnAnQnKqKP4Gw2c=", + "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 + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.518", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.518.tgz", + "integrity": "sha512-IspiwXYDKZMxo+qc3Vof4WtwbG9BMDbJfati8PYj7uS4DJmJ67pwjCKZxlTBSAuCZSMcbRnj2Xz2H14uiKT7bQ==", + "dev": true + }, + "element-class": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/element-class/-/element-class-0.2.2.tgz", + "integrity": "sha1-nTu9B2f5AT744cjr5yLBQCpgBQ4=", + "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 + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + } + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "4.2.4", + "memory-fs": "0.2.0", + "tapable": "0.1.10" + }, + "dependencies": { + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "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" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.0", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.0", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.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.2.0", + "is-date-object": "1.0.2", + "is-symbol": "1.0.3" + } + }, + "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 + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "1.0.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.4" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.6", + "qs": "6.7.0", + "range-parser": "1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "1.5.0", + "type-is": "1.6.18", + "utils-merge": "1.0.1", + "vary": "1.1.2" + } + }, + "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": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "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.7.4" + } + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "dev": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.21" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.1.1", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "statuses": "1.5.0", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.5", + "pkg-dir": "1.0.0" + } + }, + "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "follow-redirects": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", + "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "form-data-to-object": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", + "integrity": "sha1-96jmjd2RChEApl4lrGpIQUP/gWg=", + "dev": true + }, + "formsy-react": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-0.18.1.tgz", + "integrity": "sha1-xS7pW67yiW8VR85t+Nrl/NvZq0A=", + "dev": true, + "requires": { + "form-data-to-object": "0.2.0" + } + }, + "formsy-react-components": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/formsy-react-components/-/formsy-react-components-0.8.1.tgz", + "integrity": "sha1-LOTcF+25xz44nB5yBTIyXgj58Sg=", + "dev": true, + "requires": { + "classnames": "2.2.6" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "1.5.0", + "nan": "2.14.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "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.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "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-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.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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": { + "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.2.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.6" + } + } + } + }, + "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.6" + } + } + } + }, + "history": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", + "integrity": "sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw=", + "dev": true, + "requires": { + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "query-string": "4.3.4", + "warning": "3.0.0" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "requires": { + "react-is": "16.13.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "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 + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": "1.5.0", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "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.4", + "follow-redirects": "1.12.1", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.18.1", + "is-glob": "3.1.0", + "lodash": "4.17.19", + "micromatch": "2.3.11" + }, + "dependencies": { + "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-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.1" + } + } + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "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" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "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 + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "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.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", + "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "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.2.2" + } + }, + "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-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.13.1" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "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.2.2" + } + }, + "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.1.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-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "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-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "1.0.1" + } + }, + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.2" + } + }, + "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-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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "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" + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "1.1.1" + } + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "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": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "dev": true, + "requires": { + "base62": "1.2.8", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "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": "1.0.1" + } + } + } + }, + "jsx-loader": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/jsx-loader/-/jsx-loader-0.13.2.tgz", + "integrity": "sha1-l2f2Q5dcePXlq+upvFeIUpfnMtQ=", + "dev": true, + "requires": { + "jstransform": "11.0.3", + "loader-utils": "0.2.17" + } + }, + "keycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", + "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=", + "dev": true + }, + "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.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "lodash-compat": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.2.tgz", + "integrity": "sha1-xpQBKKnTD46QLNLPmf0Muk7PwYM=", + "dev": true + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==", + "dev": true + }, + "lodash._createcompounder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz", + "integrity": "sha1-XdLLVTctbnDg4jkvsjBNZjEJEHU=", + "dev": true, + "requires": { + "lodash.deburr": "3.2.0", + "lodash.words": "3.2.0" + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.camelcase": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz", + "integrity": "sha1-kyyLh/ikN3iXxnGXUzKC+Xrqwpg=", + "dev": true, + "requires": { + "lodash._createcompounder": "3.0.0" + } + }, + "lodash.deburr": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.2.0.tgz", + "integrity": "sha1-baj1QzSjZqfPTEx2742Aqhs2XtU=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "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.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.words": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.2.0.tgz", + "integrity": "sha1-TiqGSbwIdFsXxpWxo86P7llmI7M=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "4.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-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.1" + } + }, + "math-expression-evaluator": { + "version": "1.2.22", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz", + "integrity": "sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ==", + "dev": true + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "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 + }, + "memory-fs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.7" + } + }, + "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 + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "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.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "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.11" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "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.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, + "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.3", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "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 + }, + "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 + }, + "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 + } + } + }, + "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 + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "0.1.13", + "is-stream": "1.1.0" + } + }, + "node-libs-browser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", + "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "dev": true, + "requires": { + "assert": "1.5.0", + "browserify-zlib": "0.1.4", + "buffer": "4.9.2", + "console-browserify": "1.2.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.3.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.7", + "stream-browserify": "2.0.2", + "stream-http": "2.8.3", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.11", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.4", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "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.1.0" + } + }, + "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": "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.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "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=" + }, + "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.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "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.6" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.6" + } + }, + "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.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "function-bind": "1.1.1", + "has-symbols": "1.0.1", + "object-keys": "1.1.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "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.0.2" + } + }, + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "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.7" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "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-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 + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "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.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "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.1" + } + }, + "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-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 + }, + "pbkdf2-compat": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", + "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.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "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": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.6.4", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.3", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.4" + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1", + "uniqs": "2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.3", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "6.0.23" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "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.5.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "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" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.3", + "postcss": "6.0.23" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "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.5.0" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "3.0.0", + "fastparse": "1.1.2" + } + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "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" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.3", + "postcss": "6.0.23" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "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.5.0" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "3.0.0", + "fastparse": "1.1.2" + } + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "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" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.23" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "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.5.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "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" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.3", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.3", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.1", + "svgo": "0.7.2" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "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-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.3", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.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": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "react-is": "16.13.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "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.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "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.1", + "strict-uri-encode": "1.1.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 + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "4.0.0", + "kind-of": "6.0.3", + "math-random": "1.0.4" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "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 + } + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "react": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", + "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", + "dev": true, + "requires": { + "create-react-class": "15.6.3", + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2" + } + }, + "react-addons-update": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/react-addons-update/-/react-addons-update-15.3.2.tgz", + "integrity": "sha1-tjhcTbHl3zcYJeBhWwQ2DtlEMP4=", + "dev": true + }, + "react-bootstrap": { + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.29.5.tgz", + "integrity": "sha1-DG96fQaDSw24WhjM3cBLEpxfIFg=", + "dev": true, + "requires": { + "babel-runtime": "5.8.38", + "classnames": "2.2.6", + "dom-helpers": "2.4.0", + "invariant": "2.2.4", + "keycode": "2.2.0", + "lodash-compat": "3.10.2", + "react-overlays": "0.6.12", + "react-prop-types": "0.3.2", + "uncontrollable": "3.3.1", + "warning": "2.1.0" + }, + "dependencies": { + "babel-runtime": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", + "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=", + "dev": true, + "requires": { + "core-js": "1.2.7" + } + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, + "warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + } + } + }, + "react-bootstrap-table": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/react-bootstrap-table/-/react-bootstrap-table-2.11.2.tgz", + "integrity": "sha1-e4A2p53hQMBStbLtjubDTnhqPbw=", + "dev": true, + "requires": { + "@allenfang/react-toastr": "2.8.2", + "classnames": "2.2.6" + } + }, + "react-dom": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", + "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", + "dev": true, + "requires": { + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2" + } + }, + "react-hot-api": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/react-hot-api/-/react-hot-api-0.4.7.tgz", + "integrity": "sha1-p+IqVtJS4Rq9k2a2EmTPRJLFgXE=", + "dev": true + }, + "react-hot-loader": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-1.3.1.tgz", + "integrity": "sha1-yVZHrni3Pfzv9uxx/8sEGC/22vk=", + "dev": true, + "requires": { + "react-hot-api": "0.4.7", + "source-map": "0.4.4" + }, + "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": "1.0.1" + } + } + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-lazy-cache": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/react-lazy-cache/-/react-lazy-cache-3.0.1.tgz", + "integrity": "sha1-DcZNON8XZ+93Z4xclBkAZMsRsM0=", + "dev": true, + "requires": { + "deep-equal": "1.1.1" + } + }, + "react-localization": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/react-localization/-/react-localization-0.0.13.tgz", + "integrity": "sha1-7fv2kZoflFY7caCyjF5t7l8eVCU=" + }, + "react-overlays": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.6.12.tgz", + "integrity": "sha1-oHnHUMxCnX20x0dKlbS1QDPiVcM=", + "dev": true, + "requires": { + "classnames": "2.2.6", + "dom-helpers": "3.4.0", + "react-prop-types": "0.4.0", + "warning": "3.0.0" + }, + "dependencies": { + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dev": true, + "requires": { + "@babel/runtime": "7.11.0" + } + }, + "react-prop-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=", + "dev": true, + "requires": { + "warning": "3.0.0" + } + } + } + }, + "react-prop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.2.tgz", + "integrity": "sha1-4nY6xvOoAZnYmBw2R8RLBVTJe38=", + "dev": true, + "requires": { + "warning": "2.1.0" + }, + "dependencies": { + "warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + } + } + }, + "react-redux": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.10.tgz", + "integrity": "sha512-tjL0Bmpkj75Td0k+lXlF8Fc8a9GuXFv/3ahUOCXExWs/jhsKiQeTffdH0j5byejCGCRL4tvGFYlrwBF1X/Aujg==", + "dev": true, + "requires": { + "create-react-class": "15.6.3", + "hoist-non-react-statics": "3.3.2", + "invariant": "2.2.4", + "lodash": "4.17.19", + "loose-envify": "1.4.0", + "prop-types": "15.7.2" + } + }, + "react-router": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-2.8.1.tgz", + "integrity": "sha1-c+lJH2zrMW0Pd5gpCBhj43juTtc=", + "dev": true, + "requires": { + "history": "2.1.2", + "hoist-non-react-statics": "1.2.0", + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "warning": "3.0.0" + }, + "dependencies": { + "history": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz", + "integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=", + "dev": true, + "requires": { + "deep-equal": "1.1.1", + "invariant": "2.2.4", + "query-string": "3.0.3", + "warning": "2.1.0" + }, + "dependencies": { + "warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + } + } + }, + "hoist-non-react-statics": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=", + "dev": true + }, + "query-string": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz", + "integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=", + "dev": true, + "requires": { + "strict-uri-encode": "1.1.0" + } + } + } + }, + "react-sortable": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/react-sortable/-/react-sortable-1.3.2.tgz", + "integrity": "sha512-9THnR4dmYVPex87ay/5FAazAXXwF+optvJKqaojS37AZMSId6wCH5Wo6+CiXM0fZxWTn7+dcabpYf/f4/CjrpA==", + "requires": { + "react": "16.13.1", + "react-dom": "16.13.1" + }, + "dependencies": { + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "scheduler": "0.19.1" + } + } + } + }, + "react-tagsinput": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/react-tagsinput/-/react-tagsinput-3.19.0.tgz", + "integrity": "sha512-ni+/qnZrYrvLg83LtTFHErKy1KQHL0fi0Y6C5jgC1dNUePE9cS/OlQ4XH6JRSjv9GGoeVE0R/ujSBaS1uzCRYQ==", + "dev": true + }, + "react-tinymce": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/react-tinymce/-/react-tinymce-0.5.1.tgz", + "integrity": "sha1-j1a3+Bzv7Qb0rKa2bJA+LbFlwsQ=", + "dev": true, + "requires": { + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "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.2.4", + "micromatch": "3.1.10", + "readable-stream": "2.3.7" + }, + "dependencies": { + "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 + }, + "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 + }, + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + }, + "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.2.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.6" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "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.1.0" + } + }, + "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 + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.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.1" + } + } + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.2.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.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + }, + "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.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.22", + "reduce-function-call": "1.0.3" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "1.0.0" + } + }, + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "dev": true, + "requires": { + "lodash": "4.17.19", + "lodash-es": "4.17.15", + "loose-envify": "1.4.0", + "symbol-observable": "1.2.0" + } + }, + "redux-form": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/redux-form/-/redux-form-5.4.0.tgz", + "integrity": "sha512-Ssftdf3Or6nwEBl1SqgPbZdxhmZC8AejHTTLnt1R6SfCqyoHgPnPyxu8NuewS2KvDN925nwRT9dGxeIYDgtAWQ==", + "dev": true, + "requires": { + "deep-equal": "1.1.1", + "hoist-non-react-statics": "2.5.5", + "invariant": "2.2.4", + "is-promise": "2.2.2", + "prop-types": "15.7.2", + "react-lazy-cache": "3.0.1" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", + "dev": true + } + } + }, + "redux-thunk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", + "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==", + "dev": true + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "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.6" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.4.1", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.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.1.0" + } + }, + "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-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 + }, + "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 + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "ripemd160": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "2.3.0", + "range-parser": "1.2.1", + "statuses": "1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "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.7", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.3", + "mime-types": "2.1.27", + "parseurl": "1.3.3" + }, + "dependencies": { + "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.5.0" + } + }, + "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 + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.3", + "send": "0.17.1" + } + }, + "set-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.4", + "split-string": "3.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.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "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.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.3", + "use": "3.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.6" + } + }, + "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.1" + } + } + } + }, + "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.1", + "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.2" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + } + } + }, + "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.2" + } + }, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "requires": { + "faye-websocket": "0.11.3", + "uuid": "3.4.0", + "websocket-driver": "0.7.4" + } + }, + "sockjs-client": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "dev": true, + "requires": { + "debug": "3.2.6", + "eventsource": "1.0.7", + "faye-websocket": "0.11.3", + "inherits": "2.0.4", + "json3": "3.3.3", + "url-parse": "1.4.7" + }, + "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.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "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.1.0" + } + }, + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "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.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "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 + }, + "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.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "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.6" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "2.0.4", + "readable-stream": "2.3.7" + } + }, + "stream-cache": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz", + "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=", + "dev": true + }, + "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.4", + "readable-stream": "2.3.7", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.2" + } + }, + "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.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.6" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.6" + } + }, + "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.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.1.1" + } + }, + "style-loader": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", + "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=", + "dev": true, + "requires": { + "loader-utils": "1.4.0" + }, + "dependencies": { + "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 + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "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.5" + } + }, + "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" + } + } + } + }, + "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 + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.5", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + }, + "time-stamp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz", + "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==", + "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.5" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "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.2.2" + } + }, + "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" + }, + "dependencies": { + "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.2.2" + } + } + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "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 + }, + "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.27" + } + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dev": true, + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "uncontrollable": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.3.1.tgz", + "integrity": "sha1-4jtALnpMabGFP7S0PONLZIDGW28=", + "dev": true, + "requires": { + "invariant": "2.2.4" + } + }, + "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 + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "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.6", + "has-values": "0.1.4", + "isobject": "2.1.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 + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "2.1.1", + "requires-port": "1.0.0" + } + }, + "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.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "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 + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + }, + "watchpack": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", + "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "dev": true, + "requires": { + "async": "0.9.2", + "chokidar": "1.7.0", + "graceful-fs": "4.2.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, + "webpack": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", + "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", + "dev": true, + "requires": { + "acorn": "3.3.0", + "async": "1.5.2", + "clone": "1.0.4", + "enhanced-resolve": "0.9.1", + "interpret": "0.6.6", + "loader-utils": "0.2.17", + "memory-fs": "0.3.0", + "mkdirp": "0.5.5", + "node-libs-browser": "0.7.0", + "optimist": "0.6.1", + "supports-color": "3.2.3", + "tapable": "0.1.10", + "uglify-js": "2.7.5", + "watchpack": "0.2.9", + "webpack-core": "0.6.9" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.4.4" + }, + "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": "1.0.1" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.1", + "time-stamp": "2.2.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.7", + "readable-stream": "2.3.7" + } + } + } + }, + "webpack-dev-server": { + "version": "1.16.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz", + "integrity": "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI=", + "dev": true, + "requires": { + "compression": "1.7.4", + "connect-history-api-fallback": "1.6.0", + "express": "4.17.1", + "http-proxy-middleware": "0.17.4", + "open": "0.0.5", + "optimist": "0.6.1", + "serve-index": "1.9.1", + "sockjs": "0.3.21", + "sockjs-client": "1.5.0", + "stream-cache": "0.0.2", + "strip-ansi": "3.0.1", + "supports-color": "3.2.3", + "webpack-dev-middleware": "1.12.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": "0.5.2", + "safe-buffer": "5.1.2", + "websocket-extensions": "0.1.4" + } + }, + "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 + }, + "whatwg-fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz", + "integrity": "sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk=", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } +} diff --git a/src/DotNetBlog.Core/ClientManager.cs b/src/DotNetBlog.Core/ClientManager.cs index a2ba81b..e2c7954 100644 --- a/src/DotNetBlog.Core/ClientManager.cs +++ b/src/DotNetBlog.Core/ClientManager.cs @@ -1,12 +1,10 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; +using DotNetBlog.Core.Extensions; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Features; using System; -using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; -using DotNetBlog.Core.Extensions; namespace DotNetBlog.Core { diff --git a/src/DotNetBlog.Core/Data/BlogContext.cs b/src/DotNetBlog.Core/Data/BlogContext.cs index b32287e..a01085e 100644 --- a/src/DotNetBlog.Core/Data/BlogContext.cs +++ b/src/DotNetBlog.Core/Data/BlogContext.cs @@ -1,10 +1,7 @@ -using DotNetBlog.Core.Entity; +using DotNetBlog.Core.Data.Mappings; +using DotNetBlog.Core.Entity; using Microsoft.EntityFrameworkCore; using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using DotNetBlog.Core.Data.Mappings; namespace DotNetBlog.Core.Data { @@ -43,7 +40,7 @@ public BlogContext(DbContextOptions options, IServiceProvider servi protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); - + modelBuilder.Entity(SettingMapping.Map); modelBuilder.Entity(CategoryMapping.Map); modelBuilder.Entity(CategoryTopicMapping.Map); diff --git a/src/DotNetBlog.Core/Data/Mappings/CategoryMapping.cs b/src/DotNetBlog.Core/Data/Mappings/CategoryMapping.cs index abcddb8..f851de0 100644 --- a/src/DotNetBlog.Core/Data/Mappings/CategoryMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/CategoryMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/CategoryTopicMapping.cs b/src/DotNetBlog.Core/Data/Mappings/CategoryTopicMapping.cs index e028eb1..5cf75da 100644 --- a/src/DotNetBlog.Core/Data/Mappings/CategoryTopicMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/CategoryTopicMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/CommentMapping.cs b/src/DotNetBlog.Core/Data/Mappings/CommentMapping.cs index 3b232cd..9d31c36 100644 --- a/src/DotNetBlog.Core/Data/Mappings/CommentMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/CommentMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/LinkMapping.cs b/src/DotNetBlog.Core/Data/Mappings/LinkMapping.cs index d30582f..0447f5b 100644 --- a/src/DotNetBlog.Core/Data/Mappings/LinkMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/LinkMapping.cs @@ -1,11 +1,4 @@ -using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Data.Mappings +namespace DotNetBlog.Core.Data.Mappings { public sealed class LinkMapping { diff --git a/src/DotNetBlog.Core/Data/Mappings/PageMapping.cs b/src/DotNetBlog.Core/Data/Mappings/PageMapping.cs index 4514f0e..6b2c084 100644 --- a/src/DotNetBlog.Core/Data/Mappings/PageMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/PageMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/SettingMapping.cs b/src/DotNetBlog.Core/Data/Mappings/SettingMapping.cs index 59dac71..4f0ab79 100644 --- a/src/DotNetBlog.Core/Data/Mappings/SettingMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/SettingMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/TagMapping.cs b/src/DotNetBlog.Core/Data/Mappings/TagMapping.cs index e189bc1..6094fa6 100644 --- a/src/DotNetBlog.Core/Data/Mappings/TagMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/TagMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/TagTopicMapping.cs b/src/DotNetBlog.Core/Data/Mappings/TagTopicMapping.cs index 8b8076e..2c34007 100644 --- a/src/DotNetBlog.Core/Data/Mappings/TagTopicMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/TagTopicMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/TopicMapping.cs b/src/DotNetBlog.Core/Data/Mappings/TopicMapping.cs index c226ac2..06cf212 100644 --- a/src/DotNetBlog.Core/Data/Mappings/TopicMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/TopicMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/UserMapping.cs b/src/DotNetBlog.Core/Data/Mappings/UserMapping.cs index 3403b44..cded68f 100644 --- a/src/DotNetBlog.Core/Data/Mappings/UserMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/UserMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/UserTokenMapping.cs b/src/DotNetBlog.Core/Data/Mappings/UserTokenMapping.cs index 367173f..1abbfa0 100644 --- a/src/DotNetBlog.Core/Data/Mappings/UserTokenMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/UserTokenMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/Data/Mappings/WidgetMapping.cs b/src/DotNetBlog.Core/Data/Mappings/WidgetMapping.cs index a48231a..b706483 100644 --- a/src/DotNetBlog.Core/Data/Mappings/WidgetMapping.cs +++ b/src/DotNetBlog.Core/Data/Mappings/WidgetMapping.cs @@ -1,10 +1,6 @@ using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace DotNetBlog.Core.Data.Mappings { diff --git a/src/DotNetBlog.Core/DotNetBlog.Core.csproj b/src/DotNetBlog.Core/DotNetBlog.Core.csproj index 1c211db..08ad1a4 100644 --- a/src/DotNetBlog.Core/DotNetBlog.Core.csproj +++ b/src/DotNetBlog.Core/DotNetBlog.Core.csproj @@ -2,7 +2,7 @@ 1.2.0 - netstandard2.0 + netstandard2.1 DotNetBlog.Core DotNetBlog.Core false @@ -11,18 +11,18 @@ - - - + + + - - - - - - - - + + + + + + + + diff --git a/src/DotNetBlog.Core/Entity/Category.cs b/src/DotNetBlog.Core/Entity/Category.cs index 8c9bc00..10b875b 100644 --- a/src/DotNetBlog.Core/Entity/Category.cs +++ b/src/DotNetBlog.Core/Entity/Category.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class Category { diff --git a/src/DotNetBlog.Core/Entity/CategoryTopic.cs b/src/DotNetBlog.Core/Entity/CategoryTopic.cs index d1cc2e4..8a83dfc 100644 --- a/src/DotNetBlog.Core/Entity/CategoryTopic.cs +++ b/src/DotNetBlog.Core/Entity/CategoryTopic.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class CategoryTopic { diff --git a/src/DotNetBlog.Core/Entity/Comment.cs b/src/DotNetBlog.Core/Entity/Comment.cs index de50e33..37c1abf 100644 --- a/src/DotNetBlog.Core/Entity/Comment.cs +++ b/src/DotNetBlog.Core/Entity/Comment.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Entity { diff --git a/src/DotNetBlog.Core/Entity/Link.cs b/src/DotNetBlog.Core/Entity/Link.cs index fa429ab..84152ba 100644 --- a/src/DotNetBlog.Core/Entity/Link.cs +++ b/src/DotNetBlog.Core/Entity/Link.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class Link { diff --git a/src/DotNetBlog.Core/Entity/Page.cs b/src/DotNetBlog.Core/Entity/Page.cs index b7109cb..77d9ac5 100644 --- a/src/DotNetBlog.Core/Entity/Page.cs +++ b/src/DotNetBlog.Core/Entity/Page.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Enums; using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Entity { diff --git a/src/DotNetBlog.Core/Entity/Setting.cs b/src/DotNetBlog.Core/Entity/Setting.cs index be8c3b5..392da2c 100644 --- a/src/DotNetBlog.Core/Entity/Setting.cs +++ b/src/DotNetBlog.Core/Entity/Setting.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class Setting { diff --git a/src/DotNetBlog.Core/Entity/Tag.cs b/src/DotNetBlog.Core/Entity/Tag.cs index c09b015..88f11a5 100644 --- a/src/DotNetBlog.Core/Entity/Tag.cs +++ b/src/DotNetBlog.Core/Entity/Tag.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class Tag { diff --git a/src/DotNetBlog.Core/Entity/TagTopic.cs b/src/DotNetBlog.Core/Entity/TagTopic.cs index 079338e..f7b2487 100644 --- a/src/DotNetBlog.Core/Entity/TagTopic.cs +++ b/src/DotNetBlog.Core/Entity/TagTopic.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class TagTopic { diff --git a/src/DotNetBlog.Core/Entity/Topic.cs b/src/DotNetBlog.Core/Entity/Topic.cs index a910edc..1b47004 100644 --- a/src/DotNetBlog.Core/Entity/Topic.cs +++ b/src/DotNetBlog.Core/Entity/Topic.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Enums; using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Entity { diff --git a/src/DotNetBlog.Core/Entity/User.cs b/src/DotNetBlog.Core/Entity/User.cs index fe69bd4..752aade 100644 --- a/src/DotNetBlog.Core/Entity/User.cs +++ b/src/DotNetBlog.Core/Entity/User.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Entity { diff --git a/src/DotNetBlog.Core/Entity/UserToken.cs b/src/DotNetBlog.Core/Entity/UserToken.cs index d609d34..fdefe23 100644 --- a/src/DotNetBlog.Core/Entity/UserToken.cs +++ b/src/DotNetBlog.Core/Entity/UserToken.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class UserToken { diff --git a/src/DotNetBlog.Core/Entity/Widget.cs b/src/DotNetBlog.Core/Entity/Widget.cs index e21a8b2..01281b1 100644 --- a/src/DotNetBlog.Core/Entity/Widget.cs +++ b/src/DotNetBlog.Core/Entity/Widget.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Entity +namespace DotNetBlog.Core.Entity { public class Widget { diff --git a/src/DotNetBlog.Core/Enums/CommentStatus.cs b/src/DotNetBlog.Core/Enums/CommentStatus.cs index 445f176..2c4f69a 100644 --- a/src/DotNetBlog.Core/Enums/CommentStatus.cs +++ b/src/DotNetBlog.Core/Enums/CommentStatus.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Enums +namespace DotNetBlog.Core.Enums { public enum CommentStatus : byte { diff --git a/src/DotNetBlog.Core/Enums/PageStatus.cs b/src/DotNetBlog.Core/Enums/PageStatus.cs index 1d42f31..b43f0f1 100644 --- a/src/DotNetBlog.Core/Enums/PageStatus.cs +++ b/src/DotNetBlog.Core/Enums/PageStatus.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Enums +namespace DotNetBlog.Core.Enums { public enum PageStatus { diff --git a/src/DotNetBlog.Core/Enums/TopicStatus.cs b/src/DotNetBlog.Core/Enums/TopicStatus.cs index 0aa0a27..374ca26 100644 --- a/src/DotNetBlog.Core/Enums/TopicStatus.cs +++ b/src/DotNetBlog.Core/Enums/TopicStatus.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Enums +namespace DotNetBlog.Core.Enums { public enum TopicStatus : byte { diff --git a/src/DotNetBlog.Core/Enums/WidgetType.cs b/src/DotNetBlog.Core/Enums/WidgetType.cs index bc90a19..baf4e56 100644 --- a/src/DotNetBlog.Core/Enums/WidgetType.cs +++ b/src/DotNetBlog.Core/Enums/WidgetType.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Enums +namespace DotNetBlog.Core.Enums { public enum WidgetType : byte { diff --git a/src/DotNetBlog.Core/Extensions/BlogContextExtensions.cs b/src/DotNetBlog.Core/Extensions/BlogContextExtensions.cs index e6b0f2c..c00fb3b 100644 --- a/src/DotNetBlog.Core/Extensions/BlogContextExtensions.cs +++ b/src/DotNetBlog.Core/Extensions/BlogContextExtensions.cs @@ -1,15 +1,14 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Caching.Memory; -using Microsoft.EntityFrameworkCore; using DotNetBlog.Core.Model.Category; using DotNetBlog.Core.Model.Tag; using DotNetBlog.Core.Model.Topic; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; namespace DotNetBlog.Core.Extensions { @@ -37,8 +36,14 @@ public static List QueryAllCategoryFromCache(this BlogContext con { ID = ct.Key, Total = ct.Count(), - Published = ct.Count(t => t.Topic.Status == Enums.TopicStatus.Published), - Draft = ct.Count(t => t.Topic.Status == Enums.TopicStatus.Draft) + Published = + context.Topics + .Where(w => w.Status == Enums.TopicStatus.Published) + .Count(), + Draft = + context.Topics + .Where(w => w.Status == Enums.TopicStatus.Draft) + .Count() }) .ToList(); @@ -76,8 +81,8 @@ public static List QueryAllTagFromCache(this BlogContext context) { ID = ct.Key, Total = ct.Count(), - Published = ct.Count(t => t.Topic.Status == Enums.TopicStatus.Published), - Draft = ct.Count(t => t.Topic.Status == Enums.TopicStatus.Draft) + Published = context.TagTopics.Where(t => t.Topic.Status == Enums.TopicStatus.Published).Count(), + Draft = context.TagTopics.Where(t => t.Topic.Status == Enums.TopicStatus.Draft).Count() }) .ToList(); diff --git a/src/DotNetBlog.Core/Extensions/MemoryCacheExtensions.cs b/src/DotNetBlog.Core/Extensions/MemoryCacheExtensions.cs index 09467de..3796b31 100644 --- a/src/DotNetBlog.Core/Extensions/MemoryCacheExtensions.cs +++ b/src/DotNetBlog.Core/Extensions/MemoryCacheExtensions.cs @@ -1,7 +1,5 @@ using Microsoft.Extensions.Caching.Memory; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Core.Extensions diff --git a/src/DotNetBlog.Core/Extensions/StringExtensions.cs b/src/DotNetBlog.Core/Extensions/StringExtensions.cs index a08a822..8476c7b 100644 --- a/src/DotNetBlog.Core/Extensions/StringExtensions.cs +++ b/src/DotNetBlog.Core/Extensions/StringExtensions.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; -using System.Threading.Tasks; +using System.Text.RegularExpressions; namespace DotNetBlog.Core.Extensions { @@ -54,7 +50,7 @@ public static string TrimHtml(this string input) public static string ToLength(this string input, int length) { - if(string.IsNullOrWhiteSpace(input)) + if (string.IsNullOrWhiteSpace(input)) { return input; } diff --git a/src/DotNetBlog.Core/IServiceCollectionExtensions.cs b/src/DotNetBlog.Core/IServiceCollectionExtensions.cs index 97994a6..f45692a 100644 --- a/src/DotNetBlog.Core/IServiceCollectionExtensions.cs +++ b/src/DotNetBlog.Core/IServiceCollectionExtensions.cs @@ -1,14 +1,7 @@ -using DotNetBlog.Core.Model.Page; -using DotNetBlog.Core.Model.Setting; -using DotNetBlog.Core.Service; +using DotNetBlog.Core.Service; using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; using System.Reflection; -using DotNetBlog.Core.Model.Theme; -using Microsoft.AspNetCore.Http; namespace DotNetBlog.Core { @@ -34,7 +27,6 @@ public static void AddBlogService(this IServiceCollection services) }); services.AddScoped(); - } } } diff --git a/src/DotNetBlog.Core/Model/Category/CategoryBasicModel.cs b/src/DotNetBlog.Core/Model/Category/CategoryBasicModel.cs index b96c7ae..279da5f 100644 --- a/src/DotNetBlog.Core/Model/Category/CategoryBasicModel.cs +++ b/src/DotNetBlog.Core/Model/Category/CategoryBasicModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Category +namespace DotNetBlog.Core.Model.Category { public class CategoryBasicModel { diff --git a/src/DotNetBlog.Core/Model/Category/CategoryModel.cs b/src/DotNetBlog.Core/Model/Category/CategoryModel.cs index b04e3b3..eec4228 100644 --- a/src/DotNetBlog.Core/Model/Category/CategoryModel.cs +++ b/src/DotNetBlog.Core/Model/Category/CategoryModel.cs @@ -1,8 +1,4 @@ using DotNetBlog.Core.Model.Topic; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Category { diff --git a/src/DotNetBlog.Core/Model/Comment/AddCommentModel.cs b/src/DotNetBlog.Core/Model/Comment/AddCommentModel.cs index 23fed32..3e8cd01 100644 --- a/src/DotNetBlog.Core/Model/Comment/AddCommentModel.cs +++ b/src/DotNetBlog.Core/Model/Comment/AddCommentModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Core.Model.Comment { diff --git a/src/DotNetBlog.Core/Model/Comment/CommentCountModel.cs b/src/DotNetBlog.Core/Model/Comment/CommentCountModel.cs index 41db230..c9ff91e 100644 --- a/src/DotNetBlog.Core/Model/Comment/CommentCountModel.cs +++ b/src/DotNetBlog.Core/Model/Comment/CommentCountModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Comment +namespace DotNetBlog.Core.Model.Comment { public class CommentCountModel { diff --git a/src/DotNetBlog.Core/Model/Comment/CommentItemModel.cs b/src/DotNetBlog.Core/Model/Comment/CommentItemModel.cs index a6f10ea..838d622 100644 --- a/src/DotNetBlog.Core/Model/Comment/CommentItemModel.cs +++ b/src/DotNetBlog.Core/Model/Comment/CommentItemModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Comment +namespace DotNetBlog.Core.Model.Comment { public class CommentItemModel { diff --git a/src/DotNetBlog.Core/Model/Comment/CommentModel.cs b/src/DotNetBlog.Core/Model/Comment/CommentModel.cs index edeb67a..e529051 100644 --- a/src/DotNetBlog.Core/Model/Comment/CommentModel.cs +++ b/src/DotNetBlog.Core/Model/Comment/CommentModel.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Comment { diff --git a/src/DotNetBlog.Core/Model/Email/CommentEmailModel.cs b/src/DotNetBlog.Core/Model/Email/CommentEmailModel.cs index f35a83c..644a097 100644 --- a/src/DotNetBlog.Core/Model/Email/CommentEmailModel.cs +++ b/src/DotNetBlog.Core/Model/Email/CommentEmailModel.cs @@ -1,8 +1,4 @@ using DotNetBlog.Core.Model.Topic; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Email { diff --git a/src/DotNetBlog.Core/Model/Email/TestEmailConfigModel.cs b/src/DotNetBlog.Core/Model/Email/TestEmailConfigModel.cs index 95747c9..ce3f66f 100644 --- a/src/DotNetBlog.Core/Model/Email/TestEmailConfigModel.cs +++ b/src/DotNetBlog.Core/Model/Email/TestEmailConfigModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Email +namespace DotNetBlog.Core.Model.Email { public class TestEmailConfigModel { diff --git a/src/DotNetBlog.Core/Model/Install/InstallModel.cs b/src/DotNetBlog.Core/Model/Install/InstallModel.cs index aa9d2b8..a08d923 100644 --- a/src/DotNetBlog.Core/Model/Install/InstallModel.cs +++ b/src/DotNetBlog.Core/Model/Install/InstallModel.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Core.Model.Install { diff --git a/src/DotNetBlog.Core/Model/OperationResult.cs b/src/DotNetBlog.Core/Model/OperationResult.cs index 698df7c..3c1ee9a 100644 --- a/src/DotNetBlog.Core/Model/OperationResult.cs +++ b/src/DotNetBlog.Core/Model/OperationResult.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using System.Collections.Generic; namespace DotNetBlog.Core.Model { diff --git a/src/DotNetBlog.Core/Model/Page/AddPageModel.cs b/src/DotNetBlog.Core/Model/Page/AddPageModel.cs index 56527e7..05676b8 100644 --- a/src/DotNetBlog.Core/Model/Page/AddPageModel.cs +++ b/src/DotNetBlog.Core/Model/Page/AddPageModel.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Page { diff --git a/src/DotNetBlog.Core/Model/Page/EditPageModel.cs b/src/DotNetBlog.Core/Model/Page/EditPageModel.cs index a39d20e..007dfad 100644 --- a/src/DotNetBlog.Core/Model/Page/EditPageModel.cs +++ b/src/DotNetBlog.Core/Model/Page/EditPageModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Page +namespace DotNetBlog.Core.Model.Page { public class EditPageModel : AddPageModel { diff --git a/src/DotNetBlog.Core/Model/Page/PageBasicModel.cs b/src/DotNetBlog.Core/Model/Page/PageBasicModel.cs index 38f71c0..002a3a8 100644 --- a/src/DotNetBlog.Core/Model/Page/PageBasicModel.cs +++ b/src/DotNetBlog.Core/Model/Page/PageBasicModel.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Page { diff --git a/src/DotNetBlog.Core/Model/Page/PageCountModel.cs b/src/DotNetBlog.Core/Model/Page/PageCountModel.cs index 3258947..95b1be6 100644 --- a/src/DotNetBlog.Core/Model/Page/PageCountModel.cs +++ b/src/DotNetBlog.Core/Model/Page/PageCountModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Page +namespace DotNetBlog.Core.Model.Page { public class PageCountModel { diff --git a/src/DotNetBlog.Core/Model/Page/PageModel.cs b/src/DotNetBlog.Core/Model/Page/PageModel.cs index 2188f0d..8e16481 100644 --- a/src/DotNetBlog.Core/Model/Page/PageModel.cs +++ b/src/DotNetBlog.Core/Model/Page/PageModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Page +namespace DotNetBlog.Core.Model.Page { public class PageModel : PageBasicModel { diff --git a/src/DotNetBlog.Core/Model/Setting/SettingModel.cs b/src/DotNetBlog.Core/Model/Setting/SettingModel.cs index 8e3d8ce..efc4e35 100644 --- a/src/DotNetBlog.Core/Model/Setting/SettingModel.cs +++ b/src/DotNetBlog.Core/Model/Setting/SettingModel.cs @@ -1,9 +1,5 @@ -using Microsoft.AspNetCore.Mvc.Localization; -using Microsoft.Extensions.Localization; -using System; +using Microsoft.Extensions.Localization; using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Setting { diff --git a/src/DotNetBlog.Core/Model/Statistics/BlogStatisticsModel.cs b/src/DotNetBlog.Core/Model/Statistics/BlogStatisticsModel.cs index 1d09db1..0a2df58 100644 --- a/src/DotNetBlog.Core/Model/Statistics/BlogStatisticsModel.cs +++ b/src/DotNetBlog.Core/Model/Statistics/BlogStatisticsModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Statistics +namespace DotNetBlog.Core.Model.Statistics { public class BlogStatisticsModel { diff --git a/src/DotNetBlog.Core/Model/Tag/TagModel.cs b/src/DotNetBlog.Core/Model/Tag/TagModel.cs index 73347e3..c3e1bbd 100644 --- a/src/DotNetBlog.Core/Model/Tag/TagModel.cs +++ b/src/DotNetBlog.Core/Model/Tag/TagModel.cs @@ -1,8 +1,4 @@ using DotNetBlog.Core.Model.Topic; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Tag { diff --git a/src/DotNetBlog.Core/Model/Theme/ThemeModel.cs b/src/DotNetBlog.Core/Model/Theme/ThemeModel.cs index d756eef..d375cd6 100644 --- a/src/DotNetBlog.Core/Model/Theme/ThemeModel.cs +++ b/src/DotNetBlog.Core/Model/Theme/ThemeModel.cs @@ -1,7 +1,4 @@ using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; namespace DotNetBlog.Core.Model.Theme { @@ -9,7 +6,7 @@ public class ThemeModel { [JsonIgnore] public string Path { get; set; } - + public string Key { get; set; } public string Name { get; set; } diff --git a/src/DotNetBlog.Core/Model/Topic/AddTopicModel.cs b/src/DotNetBlog.Core/Model/Topic/AddTopicModel.cs index bcc9a6d..ba8fbe5 100644 --- a/src/DotNetBlog.Core/Model/Topic/AddTopicModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/AddTopicModel.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Enums; using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Topic { diff --git a/src/DotNetBlog.Core/Model/Topic/EditTopicModel.cs b/src/DotNetBlog.Core/Model/Topic/EditTopicModel.cs index e392d8f..4470096 100644 --- a/src/DotNetBlog.Core/Model/Topic/EditTopicModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/EditTopicModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Topic +namespace DotNetBlog.Core.Model.Topic { public class EditTopicModel : AddTopicModel { diff --git a/src/DotNetBlog.Core/Model/Topic/ITopicModel.cs b/src/DotNetBlog.Core/Model/Topic/ITopicModel.cs index 2b61f75..c622938 100644 --- a/src/DotNetBlog.Core/Model/Topic/ITopicModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/ITopicModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Topic +namespace DotNetBlog.Core.Model.Topic { public interface ITopicModel { diff --git a/src/DotNetBlog.Core/Model/Topic/MonthStatisticsModel.cs b/src/DotNetBlog.Core/Model/Topic/MonthStatisticsModel.cs index 3eb0045..d2f7d9b 100644 --- a/src/DotNetBlog.Core/Model/Topic/MonthStatisticsModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/MonthStatisticsModel.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Topic { diff --git a/src/DotNetBlog.Core/Model/Topic/TopicBasicModel.cs b/src/DotNetBlog.Core/Model/Topic/TopicBasicModel.cs index cb24e86..dc87c8f 100644 --- a/src/DotNetBlog.Core/Model/Topic/TopicBasicModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/TopicBasicModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Topic +namespace DotNetBlog.Core.Model.Topic { public class TopicBasicModel : ITopicModel { diff --git a/src/DotNetBlog.Core/Model/Topic/TopicCountModel.cs b/src/DotNetBlog.Core/Model/Topic/TopicCountModel.cs index 2d3c9a7..03a12fd 100644 --- a/src/DotNetBlog.Core/Model/Topic/TopicCountModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/TopicCountModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Topic +namespace DotNetBlog.Core.Model.Topic { public class TopicCountModel { diff --git a/src/DotNetBlog.Core/Model/Topic/TopicModel.cs b/src/DotNetBlog.Core/Model/Topic/TopicModel.cs index e02a665..3f93be1 100644 --- a/src/DotNetBlog.Core/Model/Topic/TopicModel.cs +++ b/src/DotNetBlog.Core/Model/Topic/TopicModel.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Model.Category; using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Topic { diff --git a/src/DotNetBlog.Core/Model/Widget/AvailableWidgetModel.cs b/src/DotNetBlog.Core/Model/Widget/AvailableWidgetModel.cs index 2f892ec..4fbc39c 100644 --- a/src/DotNetBlog.Core/Model/Widget/AvailableWidgetModel.cs +++ b/src/DotNetBlog.Core/Model/Widget/AvailableWidgetModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Core.Model.Widget +namespace DotNetBlog.Core.Model.Widget { public class AvailableWidgetModel { diff --git a/src/DotNetBlog.Core/Model/Widget/WidgetConfigModel.cs b/src/DotNetBlog.Core/Model/Widget/WidgetConfigModel.cs index 0d72288..e21292f 100644 --- a/src/DotNetBlog.Core/Model/Widget/WidgetConfigModel.cs +++ b/src/DotNetBlog.Core/Model/Widget/WidgetConfigModel.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using DotNetBlog.Core.Enums; +using Microsoft.Extensions.Localization; using Newtonsoft.Json; -using Microsoft.AspNetCore.Mvc.Localization; -using Microsoft.Extensions.Localization; +using System.Collections.Generic; namespace DotNetBlog.Core.Model.Widget { @@ -63,7 +58,7 @@ public override bool IsValid } } } - + public class MonthStatisticeWidgetConfigModel : WidgetConfigModelBase { public MonthStatisticeWidgetConfigModel(IStringLocalizer L) diff --git a/src/DotNetBlog.Core/Model/Widget/WidgetModel.cs b/src/DotNetBlog.Core/Model/Widget/WidgetModel.cs index 59a84f9..9487626 100644 --- a/src/DotNetBlog.Core/Model/Widget/WidgetModel.cs +++ b/src/DotNetBlog.Core/Model/Widget/WidgetModel.cs @@ -1,8 +1,4 @@ using DotNetBlog.Core.Enums; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Core.Model.Widget { diff --git a/src/DotNetBlog.Core/Properties/AssemblyInfo.cs b/src/DotNetBlog.Core/Properties/AssemblyInfo.cs index 59e5cff..35c2196 100644 --- a/src/DotNetBlog.Core/Properties/AssemblyInfo.cs +++ b/src/DotNetBlog.Core/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/src/DotNetBlog.Core/Service/AuthService.cs b/src/DotNetBlog.Core/Service/AuthService.cs index 2ca91b7..9cca046 100644 --- a/src/DotNetBlog.Core/Service/AuthService.cs +++ b/src/DotNetBlog.Core/Service/AuthService.cs @@ -1,13 +1,11 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; +using DotNetBlog.Core.Extensions; using DotNetBlog.Core.Model; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using DotNetBlog.Core.Extensions; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Core.Service { @@ -28,7 +26,7 @@ public async Task> Login(string userName, string passwor User userEntity = await BlogContext.Users.SingleOrDefaultAsync(t => t.UserName == userName && t.Password == password); - if(userEntity == null) + if (userEntity == null) { return OperationResult.Failure(L["Wrong username or password"].Value); } diff --git a/src/DotNetBlog.Core/Service/CategoryService.cs b/src/DotNetBlog.Core/Service/CategoryService.cs index e582231..9f9a646 100644 --- a/src/DotNetBlog.Core/Service/CategoryService.cs +++ b/src/DotNetBlog.Core/Service/CategoryService.cs @@ -1,15 +1,14 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; -using Microsoft.Extensions.Caching.Memory; +using DotNetBlog.Core.Extensions; +using DotNetBlog.Core.Model; +using DotNetBlog.Core.Model.Category; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using DotNetBlog.Core.Model; -using DotNetBlog.Core.Model.Category; -using DotNetBlog.Core.Extensions; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Core.Service { @@ -58,7 +57,7 @@ public async Task Edit(int id, string name, string description) } Category entity = await BlogContext.Categories.SingleOrDefaultAsync(t => t.ID == id); - if(entity == null) + if (entity == null) { return OperationResult.Failure(L["Category does not exists"].Value); } @@ -67,7 +66,7 @@ public async Task Edit(int id, string name, string description) entity.Description = description; await BlogContext.SaveChangesAsync(); - BlogContext.RemoveCategoryCache(); + BlogContext.RemoveCategoryCache(); return new OperationResult(); } diff --git a/src/DotNetBlog.Core/Service/CommentService.cs b/src/DotNetBlog.Core/Service/CommentService.cs index b67bd13..ac51dfb 100644 --- a/src/DotNetBlog.Core/Service/CommentService.cs +++ b/src/DotNetBlog.Core/Service/CommentService.cs @@ -1,18 +1,18 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; +using DotNetBlog.Core.Extensions; using DotNetBlog.Core.Model; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; using DotNetBlog.Core.Model.Comment; -using DotNetBlog.Core.Extensions; +using DotNetBlog.Core.Model.Setting; using DotNetBlog.Core.Model.Topic; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; -using DotNetBlog.Core.Model.Setting; -using Microsoft.AspNetCore.Mvc.Localization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace DotNetBlog.Core.Service { @@ -32,12 +32,12 @@ public class CommentService private IHtmlLocalizer L { get; set; } - public CommentService(BlogContext blogContext, - ClientManager clientManager, + public CommentService(BlogContext blogContext, + ClientManager clientManager, IMemoryCache cache, - IServiceProvider serviceProvider, - SettingModel settings, - EmailService emailService, + IServiceProvider serviceProvider, + SettingModel settings, + EmailService emailService, IHtmlLocalizer localizer) { this.BlogContext = blogContext; diff --git a/src/DotNetBlog.Core/Service/EmailService.cs b/src/DotNetBlog.Core/Service/EmailService.cs index 8f4bc7f..fca1467 100644 --- a/src/DotNetBlog.Core/Service/EmailService.cs +++ b/src/DotNetBlog.Core/Service/EmailService.cs @@ -4,14 +4,12 @@ using DotNetBlog.Core.Model.Email; using DotNetBlog.Core.Model.Setting; using MailKit.Net.Smtp; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; using MimeKit; using NLog; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Core.Service { @@ -56,13 +54,13 @@ public async Task TestEmailConfig(TestEmailConfigModel model) client.Authenticate(model.User, model.Password); await client.SendAsync(message); - + await client.DisconnectAsync(true); return new OperationResult(); } } - catch(Exception ex) + catch (Exception ex) { return OperationResult.Failure(ex.Message); } @@ -115,7 +113,7 @@ private async Task SendEmail(MimeMessage message) return new OperationResult(); } } - catch(Exception ex) + catch (Exception ex) { Logger.Error(ex); return OperationResult.Failure(ex.Message); diff --git a/src/DotNetBlog.Core/Service/InstallService.cs b/src/DotNetBlog.Core/Service/InstallService.cs index 444839e..8994fec 100644 --- a/src/DotNetBlog.Core/Service/InstallService.cs +++ b/src/DotNetBlog.Core/Service/InstallService.cs @@ -1,21 +1,18 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; -using DotNetBlog.Core.Model.Widget; -using Microsoft.AspNetCore.Mvc.Localization; -using System; -using System.Linq; -using System.Collections.Generic; -using System.Text; using DotNetBlog.Core.Enums; -using Newtonsoft.Json; -using System.Threading.Tasks; using DotNetBlog.Core.Model; using DotNetBlog.Core.Model.Install; using DotNetBlog.Core.Model.Setting; +using DotNetBlog.Core.Model.Widget; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; -using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; namespace DotNetBlog.Core.Service { diff --git a/src/DotNetBlog.Core/Service/PageService.cs b/src/DotNetBlog.Core/Service/PageService.cs index fd41564..0c3e892 100644 --- a/src/DotNetBlog.Core/Service/PageService.cs +++ b/src/DotNetBlog.Core/Service/PageService.cs @@ -1,22 +1,23 @@ -using DotNetBlog.Core.Data; +using AutoMapper; +using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; +using DotNetBlog.Core.Extensions; using DotNetBlog.Core.Model; using DotNetBlog.Core.Model.Page; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using DotNetBlog.Core.Extensions; -using Microsoft.EntityFrameworkCore; -using AutoMapper; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Core.Service { public class PageService { private static readonly string CACHE_KEY = "Cache_Page"; + private readonly IMapper _mapper; private BlogContext BlogContext { get; set; } @@ -24,11 +25,16 @@ public class PageService private IHtmlLocalizer L { get; set; } - public PageService(BlogContext blogContext, IMemoryCache cache, IHtmlLocalizer localizer) + + public PageService(BlogContext blogContext, + IMemoryCache cache, + IHtmlLocalizer localizer, + IMapper mapper) { this.BlogContext = blogContext; this.Cache = cache; this.L = localizer; + _mapper = mapper; } public async Task> All() @@ -55,7 +61,7 @@ public async Task> Add(AddPageModel model) model.Alias = await this.GenerateAlias(null, model.Alias, model.Title); - var entity = Mapper.Map(model); + var entity = _mapper.Map(model); entity.CreateDate = DateTime.Now; entity.EditDate = model.Date ?? DateTime.Now; @@ -96,7 +102,7 @@ public async Task> Edit(EditPageModel model) model.Alias = await this.GenerateAlias(model.ID, model.Alias, model.Title); - Mapper.Map(model, entity); + _mapper.Map(model, entity); entity.EditDate = model.Date ?? DateTime.Now; entity.ParentID = model.Parent; @@ -115,12 +121,12 @@ public async Task> Query() var result = entityList.Select(entity => { - var pageModel = Mapper.Map(entity); + var pageModel = _mapper.Map(entity); if (entity.ParentID.HasValue) { var parent = entityList.SingleOrDefault(t => t.ID == entity.ParentID.Value); - pageModel.Parent = Mapper.Map(parent); + pageModel.Parent = _mapper.Map(parent); } return pageModel; @@ -131,16 +137,16 @@ public async Task> Query() public async Task> QueryPublished() { - var entityList = (await this.All()).Where(t=>t.Status == Enums.PageStatus.Published); + var entityList = (await this.All()).Where(t => t.Status == Enums.PageStatus.Published); var result = entityList.Select(entity => { - var pageModel = Mapper.Map(entity); + var pageModel = _mapper.Map(entity); if (entity.ParentID.HasValue) { var parent = entityList.SingleOrDefault(t => t.ID == entity.ParentID.Value); - pageModel.Parent = Mapper.Map(parent); + pageModel.Parent = _mapper.Map(parent); } return pageModel; @@ -174,7 +180,7 @@ public async Task Get(string alias) return pageModel; } - + public async Task BatchUpdateStatus(int[] idList, Enums.PageStatus status) { var pageList = await BlogContext.Pages.Where(t => idList.Contains(t.ID)).ToListAsync(); @@ -217,11 +223,11 @@ private async Task> Transform(params Page[] entityList) var result = entityList.Select(entity => { - var pageModel = Mapper.Map(entity); + var pageModel = _mapper.Map(entity); if (entity.ParentID.HasValue) { var parent = allEntityList.SingleOrDefault(t => t.ID == entity.ParentID.Value); - pageModel.Parent = Mapper.Map(parent); + pageModel.Parent = _mapper.Map(parent); } return pageModel; diff --git a/src/DotNetBlog.Core/Service/SettingService.cs b/src/DotNetBlog.Core/Service/SettingService.cs index 7802bfc..c01862c 100644 --- a/src/DotNetBlog.Core/Service/SettingService.cs +++ b/src/DotNetBlog.Core/Service/SettingService.cs @@ -1,15 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Reflection; -using DotNetBlog.Core.Data; -using Microsoft.Extensions.Caching.Memory; -using DotNetBlog.Core.Model.Setting; +using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; +using DotNetBlog.Core.Model.Setting; using Microsoft.EntityFrameworkCore; -using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Localization; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace DotNetBlog.Core.Service { diff --git a/src/DotNetBlog.Core/Service/StatisticsService.cs b/src/DotNetBlog.Core/Service/StatisticsService.cs index 7c7cdfc..97308b7 100644 --- a/src/DotNetBlog.Core/Service/StatisticsService.cs +++ b/src/DotNetBlog.Core/Service/StatisticsService.cs @@ -1,10 +1,7 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Model.Statistics; -using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; namespace DotNetBlog.Core.Service { @@ -26,14 +23,20 @@ public async Task GetBlogStatistics() Topics = new Model.Topic.TopicCountModel() }; - var topicQuery = await this.BlogContext.Topics.GroupBy(t => t.Status) - .ToDictionaryAsync(t => t.Key, t => t.Count()); + var topicQuery = this.BlogContext.Topics + .ToArray() + .GroupBy(t => t.Status) + .ToDictionary(t => t.Key, t => t.Count()); - var pageQuery = await this.BlogContext.Pages.GroupBy(t => t.Status) - .ToDictionaryAsync(t => t.Key, t => t.Count()); + var pageQuery = this.BlogContext.Pages + .ToArray() + .GroupBy(t => t.Status) + .ToDictionary(t => t.Key, t => t.Count()); - var commentQuery = await this.BlogContext.Comments.GroupBy(t => t.Status) - .ToDictionaryAsync(t => t.Key, t => t.Count()); + var commentQuery = this.BlogContext.Comments + .ToArray() + .GroupBy(t => t.Status) + .ToDictionary(t => t.Key, t => t.Count()); if (topicQuery.ContainsKey(Enums.TopicStatus.Published)) { diff --git a/src/DotNetBlog.Core/Service/TagService.cs b/src/DotNetBlog.Core/Service/TagService.cs index 1099a58..af25dbf 100644 --- a/src/DotNetBlog.Core/Service/TagService.cs +++ b/src/DotNetBlog.Core/Service/TagService.cs @@ -1,13 +1,13 @@ using DotNetBlog.Core.Data; +using DotNetBlog.Core.Extensions; +using DotNetBlog.Core.Model; using DotNetBlog.Core.Model.Tag; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using DotNetBlog.Core.Extensions; -using DotNetBlog.Core.Model; -using Microsoft.EntityFrameworkCore; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Core.Service { @@ -69,7 +69,7 @@ public async Task Edit(int id, string keyword) var entity = await this.BlogContext.Tags.SingleOrDefaultAsync(t => t.ID == id); - if(entity == null) + if (entity == null) { return OperationResult.Failure(L["The label does not exists"].Value); } diff --git a/src/DotNetBlog.Core/Service/ThemeService.cs b/src/DotNetBlog.Core/Service/ThemeService.cs index 153a137..643cea4 100644 --- a/src/DotNetBlog.Core/Service/ThemeService.cs +++ b/src/DotNetBlog.Core/Service/ThemeService.cs @@ -1,11 +1,8 @@ using DotNetBlog.Core.Model.Setting; using DotNetBlog.Core.Model.Theme; using Microsoft.AspNetCore.Hosting; -using System; using System.Collections.Generic; using System.IO; -using System.Text; -using System.Threading.Tasks; namespace DotNetBlog.Core.Service { diff --git a/src/DotNetBlog.Core/Service/TopicService.cs b/src/DotNetBlog.Core/Service/TopicService.cs index b9ab276..ae94311 100644 --- a/src/DotNetBlog.Core/Service/TopicService.cs +++ b/src/DotNetBlog.Core/Service/TopicService.cs @@ -1,22 +1,25 @@ -using DotNetBlog.Core.Model; -using DotNetBlog.Core.Model.Topic; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using DotNetBlog.Core.Extensions; +using AutoMapper; using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Caching.Memory; +using DotNetBlog.Core.Extensions; +using DotNetBlog.Core.Model; using DotNetBlog.Core.Model.Category; using DotNetBlog.Core.Model.Setting; +using DotNetBlog.Core.Model.Topic; using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Caching.Memory; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace DotNetBlog.Core.Service { public class TopicService { + private readonly IMapper _mapper; + private BlogContext BlogContext { get; set; } private IMemoryCache Cache { get; set; } @@ -27,17 +30,19 @@ public class TopicService private IHtmlLocalizer L { get; set; } - public TopicService(BlogContext blogContext, - IMemoryCache cache, - SettingModel settings, + public TopicService(BlogContext blogContext, + IMemoryCache cache, + SettingModel settings, ClientManager clientManager, - IHtmlLocalizer localizer) + IHtmlLocalizer localizer, + IMapper mapper) { BlogContext = blogContext; Cache = cache; Settings = settings; ClientManager = clientManager; L = localizer; + _mapper = mapper; } public async Task> Add(AddTopicModel model) @@ -486,22 +491,22 @@ private async Task> Transform(params Topic[] entityList) int[] idList = entityList.Select(t => t.ID).ToArray(); - List categoryTopicList = await BlogContext.CategoryTopics.Include(t => t.Category).Where(t => idList.Contains(t.TopicID)).ToListAsync(); - List tagTopicList = await BlogContext.TagTopics.Include(t => t.Tag).Where(t => idList.Contains(t.TopicID)).ToListAsync(); + var categoryTopicList = await BlogContext.CategoryTopics.Include(t => t.Category).Where(t => idList.Contains(t.TopicID)).ToListAsync(); + var tagTopicList = await BlogContext.TagTopics.Include(t => t.Tag).Where(t => idList.Contains(t.TopicID)).ToListAsync(); var topicComments = await BlogContext.Comments.Where(t => idList.Contains(t.TopicID)) .GroupBy(t => t.TopicID) .Select(t => new { TopicID = t.Key, - Approved = t.Count(c => c.Status == Enums.CommentStatus.Approved), - Reject = t.Count(c => c.Status == Enums.CommentStatus.Reject), - Pending = t.Count(c => c.Status == Enums.CommentStatus.Pending), + Approved = BlogContext.Comments.Where(c => c.Status == Enums.CommentStatus.Approved).Count(), + Reject = BlogContext.Comments.Where(c => c.Status == Enums.CommentStatus.Reject).Count(), + Pending = BlogContext.Comments.Where(c => c.Status == Enums.CommentStatus.Pending).Count(), Total = t.Count() }).ToListAsync(); List result = entityList.Select(entity => { - var model = AutoMapper.Mapper.Map(entity); + var model = _mapper.Map(entity); model.Categories = categoryTopicList.Where(category => category.TopicID == entity.ID) .Select(category => new CategoryBasicModel { @@ -552,14 +557,14 @@ private async Task GenerateAlias(int? id, string alias, string title) else { r_alias = null; - } + } return r_alias; } private string GenerateSummary(string summary, string content) { - if(string.IsNullOrWhiteSpace(summary)) + if (string.IsNullOrWhiteSpace(summary)) { summary = content; } diff --git a/src/DotNetBlog.Core/Service/UserService.cs b/src/DotNetBlog.Core/Service/UserService.cs index 1aded8a..451f3a5 100644 --- a/src/DotNetBlog.Core/Service/UserService.cs +++ b/src/DotNetBlog.Core/Service/UserService.cs @@ -1,13 +1,10 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; -using DotNetBlog.Core.Model; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; using DotNetBlog.Core.Extensions; +using DotNetBlog.Core.Model; using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.EntityFrameworkCore; +using System.Threading.Tasks; namespace DotNetBlog.Core.Service { diff --git a/src/DotNetBlog.Core/Service/WidgetService.cs b/src/DotNetBlog.Core/Service/WidgetService.cs index e0002f7..5d2ec83 100644 --- a/src/DotNetBlog.Core/Service/WidgetService.cs +++ b/src/DotNetBlog.Core/Service/WidgetService.cs @@ -1,19 +1,18 @@ using DotNetBlog.Core.Data; using DotNetBlog.Core.Entity; using DotNetBlog.Core.Enums; +using DotNetBlog.Core.Extensions; +using DotNetBlog.Core.Model; using DotNetBlog.Core.Model.Widget; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Localization; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using DotNetBlog.Core.Extensions; -using Microsoft.EntityFrameworkCore; -using DotNetBlog.Core.Model; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Microsoft.AspNetCore.Mvc.Localization; -using Microsoft.Extensions.Localization; namespace DotNetBlog.Core.Service { @@ -65,7 +64,7 @@ public List QueryAvailable() List result = new List(); var arr = Enum.GetValues(typeof(WidgetType)); - foreach(byte item in arr) + foreach (byte item in arr) { var type = (WidgetType)item; var configType = DefaultWidgetConfigTypes[type]; @@ -123,7 +122,7 @@ public async Task Save(List widgetList) Config = JsonConvert.SerializeObject(t.Config) }).ToList(); this.BlogContext.AddRange(entityList); - await this.BlogContext.SaveChangesAsync(); + await this.BlogContext.SaveChangesAsync(); tran.Commit(); diff --git a/src/DotNetBlog.Core/Utilities/EncryptHelper.cs b/src/DotNetBlog.Core/Utilities/EncryptHelper.cs index 4012703..5fb1d6d 100644 --- a/src/DotNetBlog.Core/Utilities/EncryptHelper.cs +++ b/src/DotNetBlog.Core/Utilities/EncryptHelper.cs @@ -1,9 +1,6 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Security.Cryptography; using System.Text; -using System.Threading.Tasks; namespace DotNetBlog.Core.Utilities { diff --git a/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs b/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs index 8db6255..b50f600 100644 --- a/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs +++ b/src/DotNetBlog.Core/Utilities/MarkdownUtils.cs @@ -1,7 +1,4 @@ using Markdig; -using System; -using System.Collections.Generic; -using System.Text; namespace DotNetBlog { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/CategoryController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/CategoryController.cs index b17a03a..62c51af 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/CategoryController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/CategoryController.cs @@ -1,11 +1,7 @@ using DotNetBlog.Core.Model; -using DotNetBlog.Core.Model.Category; using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.Category; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers @@ -39,7 +35,7 @@ public async Task Add([FromBody] SaveCategoryModel model) OperationResult result = await CategoryService.Add(model.Name, model.Description); - if(result.Success) + if (result.Success) { return Success(result.Data); } @@ -50,7 +46,7 @@ public async Task Add([FromBody] SaveCategoryModel model) } [HttpPost("{id:int}")] - public async Task Edit([FromRoute]int id, [FromBody] SaveCategoryModel model) + public async Task Edit([FromRoute] int id, [FromBody] SaveCategoryModel model) { if (model == null) { @@ -72,7 +68,7 @@ public async Task Edit([FromRoute]int id, [FromBody] SaveCategory [HttpPost("remove")] public async Task Remove([FromBody] RemoveCategoryModel model) { - if(model == null) + if (model == null) { return InvalidRequest(); } diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/CommentController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/CommentController.cs index c7d5dce..3c9687c 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/CommentController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/CommentController.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.Comment; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers @@ -20,7 +17,7 @@ public CommentController(CommentService commentService) } [HttpGet("query")] - public async Task Query([FromQuery]QueryCommentModel model) + public async Task Query([FromQuery] QueryCommentModel model) { var result = await this.CommentService.Query(model.PageIndex, model.PageSize, model.Status, model.Keywords); @@ -28,7 +25,7 @@ public async Task Query([FromQuery]QueryCommentModel model) } [HttpPost("batch/approve")] - public async Task BatchApprove([FromBody]BatchModel model) + public async Task BatchApprove([FromBody] BatchModel model) { if (model == null) { @@ -41,7 +38,7 @@ public async Task BatchApprove([FromBody]BatchModel model) } [HttpPost("batch/reject")] - public async Task BatchReject([FromBody]BatchModel model) + public async Task BatchReject([FromBody] BatchModel model) { if (model == null) { @@ -54,7 +51,7 @@ public async Task BatchReject([FromBody]BatchModel model) } [HttpPost("delete")] - public async Task Delete([FromBody]BatchModel model) + public async Task Delete([FromBody] BatchModel model) { if (model == null) { @@ -67,7 +64,7 @@ public async Task Delete([FromBody]BatchModel model) } [HttpPost("reply")] - public async Task Reply([FromBody]ReplyCommentModel model) + public async Task Reply([FromBody] ReplyCommentModel model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/ConfigController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/ConfigController.cs index 6b8d678..32a955e 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/ConfigController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/ConfigController.cs @@ -1,12 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; +using AutoMapper; +using DotNetBlog.Core.Model.Email; using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.Config; -using AutoMapper; -using DotNetBlog.Core.Model.Email; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; // For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 @@ -16,17 +13,24 @@ namespace DotNetBlog.Web.Areas.Api.Controllers [Route("api/config")] public class ConfigController : ControllerBase { + private readonly IMapper _mapper; + private SettingService SettingService { get; set; } private EmailService EmailService { get; set; } private ThemeService ThemeService { get; set; } - public ConfigController(SettingService settingService, EmailService emailService, ThemeService themeService) + public ConfigController( + SettingService settingService, + EmailService emailService, + ThemeService themeService, + IMapper mapper) { SettingService = settingService; EmailService = emailService; ThemeService = themeService; + _mapper = mapper; } [HttpGet("themes")] @@ -40,13 +44,13 @@ public IActionResult GetThemes() public IActionResult GetBasicConfig() { var config = SettingService.Get(); - var model = Mapper.Map(config); + var model = _mapper.Map(config); return Success(model); } [HttpPost("basic")] - public async Task SaveBasicConfig([FromBody]BasicConfigModel model) + public async Task SaveBasicConfig([FromBody] BasicConfigModel model) { return await this.SaveConfig(model); } @@ -55,19 +59,19 @@ public async Task SaveBasicConfig([FromBody]BasicConfigModel mode public IActionResult GetEmailConfig() { var config = SettingService.Get(); - var model = Mapper.Map(config); + var model = _mapper.Map(config); return Success(model); } [HttpPost("email")] - public async Task SaveEmailConfig([FromBody]EmailConfigModel model) + public async Task SaveEmailConfig([FromBody] EmailConfigModel model) { return await this.SaveConfig(model); } [HttpPost("email/test")] - public async Task TestEmailConfig([FromBody]EmailConfigModel model) + public async Task TestEmailConfig([FromBody] EmailConfigModel model) { if (model == null) { @@ -100,13 +104,13 @@ public async Task TestEmailConfig([FromBody]EmailConfigModel mode public IActionResult GetCommentConfig() { var config = SettingService.Get(); - var model = Mapper.Map(config); + var model = _mapper.Map(config); return Success(model); } [HttpPost("comment")] - public async Task SaveCommentConfig([FromBody]CommentConfigModel model) + public async Task SaveCommentConfig([FromBody] CommentConfigModel model) { return await this.SaveConfig(model); } @@ -115,13 +119,13 @@ public async Task SaveCommentConfig([FromBody]CommentConfigModel public IActionResult GetAdvanceConfig() { var config = SettingService.Get(); - var model = Mapper.Map(config); + var model = _mapper.Map(config); return Success(model); } [HttpPost("advance")] - public async Task SaveAdvanceConfig([FromBody]AdvanceConfigModel model) + public async Task SaveAdvanceConfig([FromBody] AdvanceConfigModel model) { return await this.SaveConfig(model); } @@ -135,7 +139,7 @@ private async Task SaveConfig(object model) } var config = SettingService.Get(); - Mapper.Map(model, config); + _mapper.Map(model, config); await SettingService.Save(config); diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/ControllerBase.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/ControllerBase.cs index 6352365..540274f 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/ControllerBase.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/ControllerBase.cs @@ -2,13 +2,9 @@ using DotNetBlog.Web.Areas.Api.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Localization; -using Microsoft.AspNetCore.Mvc.ModelBinding; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; -using System; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; +using System.Text.Json; namespace DotNetBlog.Web.Areas.Api.Controllers { @@ -17,13 +13,15 @@ namespace DotNetBlog.Web.Areas.Api.Controllers [ValidateRequestApiFilter] public class ControllerBase : Controller { - private static readonly JsonSerializerSettings _DefaultJsonSerializerSettings; + private static readonly JsonSerializerOptions _DefaultJsonSerializerSettings; IHtmlLocalizer localizer; private IHtmlLocalizer L { - get { - if (localizer == null) { + get + { + if (localizer == null) + { localizer = this.HttpContext.RequestServices.GetService(typeof(IHtmlLocalizer)) as IHtmlLocalizer; } return localizer; @@ -32,10 +30,12 @@ private IHtmlLocalizer L static ControllerBase() { - _DefaultJsonSerializerSettings = new JsonSerializerSettings + _DefaultJsonSerializerSettings = new JsonSerializerOptions { - DateFormatString = "yyyy-MM-dd HH:mm:ss", - ContractResolver = new CamelCasePropertyNamesContractResolver() + //DateFormatString = "yyyy-MM-dd HH:mm:ss", + //ContractResolver = new CamelCasePropertyNamesContractResolver() + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + }; } @@ -103,7 +103,7 @@ public IActionResult InvalidRequest() } else { - errorMessage = ModelState.Where(t => t.Value.Errors.Any()).Select(t => t.Value).FirstOrDefault()?.Errors.FirstOrDefault()?.ErrorMessage; + errorMessage = ModelState.Where(t => t.Value.Errors.Any()).Select(t => t.Value).FirstOrDefault()?.Errors.FirstOrDefault()?.ErrorMessage; } errorMessage = string.IsNullOrWhiteSpace(errorMessage) ? L["Bad request"].Value : errorMessage; diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/MyController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/MyController.cs index 257d35f..cd8a04d 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/MyController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/MyController.cs @@ -2,9 +2,6 @@ using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.My; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers @@ -30,7 +27,7 @@ public IActionResult GetMyInfo() } [HttpPost("")] - public async Task EditMyInfo([FromBody]EditMyInfoModel model) + public async Task EditMyInfo([FromBody] EditMyInfoModel model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/PageController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/PageController.cs index e007b3c..7a5a48b 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/PageController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/PageController.cs @@ -3,9 +3,6 @@ using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.Page; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers @@ -30,7 +27,7 @@ public async Task All() } [HttpPost] - public async Task Add([FromBody]AddPageModel model) + public async Task Add([FromBody] AddPageModel model) { if (model == null) { @@ -58,7 +55,7 @@ public async Task Get(int id) } [HttpPost("{id:int}")] - public async Task Edit([FromRoute]int id, [FromBody]EditPageModel model) + public async Task Edit([FromRoute] int id, [FromBody] EditPageModel model) { if (model == null) { @@ -80,7 +77,7 @@ public async Task Edit([FromRoute]int id, [FromBody]EditPageModel } [HttpPost("batch/publish")] - public async Task BatchPublish([FromBody]BatchModel model) + public async Task BatchPublish([FromBody] BatchModel model) { if (model == null) { @@ -88,12 +85,12 @@ public async Task BatchPublish([FromBody]BatchModel model) } await this.PageService.BatchUpdateStatus(model.PageList, PageStatus.Published); - + return this.Success(); } [HttpPost("batch/draft")] - public async Task BatchDraft([FromBody]BatchModel model) + public async Task BatchDraft([FromBody] BatchModel model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/StatisticsController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/StatisticsController.cs index f94a0f6..300a135 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/StatisticsController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/StatisticsController.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/TagController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/TagController.cs index f6750bd..f8d28af 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/TagController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/TagController.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.Tag; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers @@ -20,7 +17,7 @@ public TagController(TagService tagService) } [HttpGet("query")] - public async Task Query([FromQuery]QueryTagModel model) + public async Task Query([FromQuery] QueryTagModel model) { if (model == null) { @@ -33,7 +30,7 @@ public async Task Query([FromQuery]QueryTagModel model) } [HttpPost("delete")] - public async Task Delete([FromBody]DeleteTagModel model) + public async Task Delete([FromBody] DeleteTagModel model) { if (model == null) { @@ -46,7 +43,7 @@ public async Task Delete([FromBody]DeleteTagModel model) } [HttpPost("{id:int}")] - public async Task Edit([FromRoute]int id, [FromBody]SaveTagModel model) + public async Task Edit([FromRoute] int id, [FromBody] SaveTagModel model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/TopicController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/TopicController.cs index c2de5e7..c0c20a3 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/TopicController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/TopicController.cs @@ -3,9 +3,6 @@ using DotNetBlog.Web.Areas.Api.Models.Topic; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Localization; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Controllers @@ -25,7 +22,7 @@ public TopicController(TopicService topicService, IHtmlLocalizer Add([FromBody]AddTopicModel model) + public async Task Add([FromBody] AddTopicModel model) { if (model == null) { @@ -44,7 +41,7 @@ public async Task Add([FromBody]AddTopicModel model) } [HttpPost("{id:int}")] - public async Task Edit([FromRoute]int id, [FromBody]EditTopicModel model) + public async Task Edit([FromRoute] int id, [FromBody] EditTopicModel model) { if (model == null) { @@ -65,7 +62,7 @@ public async Task Edit([FromRoute]int id, [FromBody]EditTopicMode } [HttpGet("query")] - public async Task Query([FromQuery]QueryTopicModel model) + public async Task Query([FromQuery] QueryTopicModel model) { if (model == null) { @@ -87,7 +84,7 @@ public async Task Query([FromQuery]QueryTopicModel model) public async Task Get(int id) { var model = await TopicService.Get(id); - if(model == null) + if (model == null) { return Error(L["Article does not exist"].Value); } @@ -95,7 +92,7 @@ public async Task Get(int id) } [HttpPost("batch/publish")] - public async Task BatchPublish([FromBody]BatchModel model) + public async Task BatchPublish([FromBody] BatchModel model) { if (model == null) { @@ -108,7 +105,7 @@ public async Task BatchPublish([FromBody]BatchModel model) } [HttpPost("batch/draft")] - public async Task BatchDraft([FromBody]BatchModel model) + public async Task BatchDraft([FromBody] BatchModel model) { if (model == null) { @@ -121,7 +118,7 @@ public async Task BatchDraft([FromBody]BatchModel model) } [HttpPost("batch/trash")] - public async Task BatchTrash([FromBody]BatchModel model) + public async Task BatchTrash([FromBody] BatchModel model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/UploadController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/UploadController.cs index 49d2bac..4fb8d32 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/UploadController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/UploadController.cs @@ -3,7 +3,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Localization; using System; -using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -13,20 +12,20 @@ namespace DotNetBlog.Web.Areas.Api.Controllers [Route("api/upload")] public class UploadController : ControllerBase { - private IHostingEnvironment Enviroment { get; set; } + private IWebHostEnvironment Enviroment { get; set; } private IHtmlLocalizer L { get; set; } private static readonly string[] AvailableImageExtensionList = new string[] { ".jpg", ".png", ".gif", ".bmp", "" }; - public UploadController(IHostingEnvironment enviroment, IHtmlLocalizer localizer) + public UploadController(IWebHostEnvironment enviroment, IHtmlLocalizer localizer) { this.Enviroment = enviroment; this.L = localizer; } [HttpPost("image")] - public async Task UploadImage([FromForm]UploadImageModel model) + public async Task UploadImage([FromForm] UploadImageModel model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Controllers/WidgetController.cs b/src/DotNetBlog.Web/Areas/Api/Controllers/WidgetController.cs index c96e61b..73da17f 100644 --- a/src/DotNetBlog.Web/Areas/Api/Controllers/WidgetController.cs +++ b/src/DotNetBlog.Web/Areas/Api/Controllers/WidgetController.cs @@ -2,7 +2,6 @@ using DotNetBlog.Core.Service; using DotNetBlog.Web.Areas.Api.Models.Widget; using Microsoft.AspNetCore.Mvc; -using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -38,7 +37,7 @@ public async Task QueryAll() } [HttpPost("")] - public async Task Save([FromBody]List model) + public async Task Save([FromBody] List model) { if (model == null) { diff --git a/src/DotNetBlog.Web/Areas/Api/Filters/ErrorHandlerFilter.cs b/src/DotNetBlog.Web/Areas/Api/Filters/ErrorHandlerFilter.cs index 3b016db..38d6318 100644 --- a/src/DotNetBlog.Web/Areas/Api/Filters/ErrorHandlerFilter.cs +++ b/src/DotNetBlog.Web/Areas/Api/Filters/ErrorHandlerFilter.cs @@ -1,14 +1,10 @@ -using Microsoft.AspNetCore.Mvc.Filters; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using NLog; -using DotNetBlog.Web.Areas.Api.Models; -using Microsoft.AspNetCore.Mvc; +using DotNetBlog.Web.Areas.Api.Models; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.Extensions.DependencyInjection; +using NLog; namespace DotNetBlog.Web.Areas.Api.Filters { diff --git a/src/DotNetBlog.Web/Areas/Api/Filters/RequireLoginApiFilter.cs b/src/DotNetBlog.Web/Areas/Api/Filters/RequireLoginApiFilter.cs index def3964..c37e00d 100644 --- a/src/DotNetBlog.Web/Areas/Api/Filters/RequireLoginApiFilter.cs +++ b/src/DotNetBlog.Web/Areas/Api/Filters/RequireLoginApiFilter.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.AspNetCore.Mvc.Localization; using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Mvc.Filters; using System.Net; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Web.Areas.Api.Filters { diff --git a/src/DotNetBlog.Web/Areas/Api/Filters/ValidateRequestApiFilter.cs b/src/DotNetBlog.Web/Areas/Api/Filters/ValidateRequestApiFilter.cs index 95756aa..0302cd6 100644 --- a/src/DotNetBlog.Web/Areas/Api/Filters/ValidateRequestApiFilter.cs +++ b/src/DotNetBlog.Web/Areas/Api/Filters/ValidateRequestApiFilter.cs @@ -1,9 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.AspNetCore.Http; namespace DotNetBlog.Web.Areas.Api.Filters { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/ApiResponse.cs b/src/DotNetBlog.Web/Areas/Api/Models/ApiResponse.cs index 6957479..5eb1b82 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/ApiResponse.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/ApiResponse.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using System.Collections.Generic; namespace DotNetBlog.Web.Areas.Api.Models { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Category/RemoveCategoryModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Category/RemoveCategoryModel.cs index 7a5fa8b..40793aa 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Category/RemoveCategoryModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Category/RemoveCategoryModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.Areas.Api.Models.Category +namespace DotNetBlog.Web.Areas.Api.Models.Category { public class RemoveCategoryModel { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Category/SaveCategoryModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Category/SaveCategoryModel.cs index 61afd92..b8fc77b 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Category/SaveCategoryModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Category/SaveCategoryModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Category { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Comment/BatchModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Comment/BatchModel.cs index 1f360d7..bba8a82 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Comment/BatchModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Comment/BatchModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Comment { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Comment/QueryCommentModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Comment/QueryCommentModel.cs index 779e793..d3195cb 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Comment/QueryCommentModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Comment/QueryCommentModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.Areas.Api.Models.Comment +namespace DotNetBlog.Web.Areas.Api.Models.Comment { public class QueryCommentModel { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Comment/ReplyCommentModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Comment/ReplyCommentModel.cs index b82fc16..d6c367e 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Comment/ReplyCommentModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Comment/ReplyCommentModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Comment { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Config/AdvanceConfigModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Config/AdvanceConfigModel.cs index 6477d04..b38c56f 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Config/AdvanceConfigModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Config/AdvanceConfigModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Config { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Config/BasicConfigModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Config/BasicConfigModel.cs index 874333c..6ac2b5e 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Config/BasicConfigModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Config/BasicConfigModel.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Models.Config { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Config/CommentConfigModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Config/CommentConfigModel.cs index 4525c48..aba7cdb 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Config/CommentConfigModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Config/CommentConfigModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.Areas.Api.Models.Config +namespace DotNetBlog.Web.Areas.Api.Models.Config { public class CommentConfigModel { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Config/EmailConfigModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Config/EmailConfigModel.cs index fdbcc7c..40e8c7a 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Config/EmailConfigModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Config/EmailConfigModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.Areas.Api.Models.Config +namespace DotNetBlog.Web.Areas.Api.Models.Config { public class EmailConfigModel { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/My/EditMyInfoModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/My/EditMyInfoModel.cs index 9265e30..70ce595 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/My/EditMyInfoModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/My/EditMyInfoModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.My { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Page/BatchModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Page/BatchModel.cs index ca1bb25..8014bb1 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Page/BatchModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Page/BatchModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Page { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Tag/DeleteTagModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Tag/DeleteTagModel.cs index 4b13381..915f2db 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Tag/DeleteTagModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Tag/DeleteTagModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Tag { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Tag/QueryTagModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Tag/QueryTagModel.cs index 941aae5..f6fda95 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Tag/QueryTagModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Tag/QueryTagModel.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Models.Tag { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Tag/SaveTagModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Tag/SaveTagModel.cs index 131a06c..29bfd99 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Tag/SaveTagModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Tag/SaveTagModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Tag { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Topic/BatchModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Topic/BatchModel.cs index c5216ea..e55f753 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Topic/BatchModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Topic/BatchModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.Areas.Api.Models.Topic { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Topic/QueryTopicModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Topic/QueryTopicModel.cs index dbda3c2..22dce29 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Topic/QueryTopicModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Topic/QueryTopicModel.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Enums; using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Models.Topic { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Upload/UploadImageModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Upload/UploadImageModel.cs index 18c58a0..b311147 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Upload/UploadImageModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Upload/UploadImageModel.cs @@ -1,9 +1,5 @@ using Microsoft.AspNetCore.Http; -using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Models.Upload { diff --git a/src/DotNetBlog.Web/Areas/Api/Models/Widget/SaveWidgetModel.cs b/src/DotNetBlog.Web/Areas/Api/Models/Widget/SaveWidgetModel.cs index 1db6522..db012a1 100644 --- a/src/DotNetBlog.Web/Areas/Api/Models/Widget/SaveWidgetModel.cs +++ b/src/DotNetBlog.Web/Areas/Api/Models/Widget/SaveWidgetModel.cs @@ -1,10 +1,5 @@ -using DotNetBlog.Core.Model.Widget; -using Newtonsoft.Json.Linq; -using System; -using System.Collections.Generic; +using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Areas.Api.Models.Widget { diff --git a/src/DotNetBlog.Web/AutoMapperConfig.cs b/src/DotNetBlog.Web/AutoMapperConfig.cs index 20421f2..b272fff 100644 --- a/src/DotNetBlog.Web/AutoMapperConfig.cs +++ b/src/DotNetBlog.Web/AutoMapperConfig.cs @@ -1,21 +1,18 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using AutoMapper; -using DotNetBlog.Web.Areas.Api.Models.Config; -using DotNetBlog.Core.Model.Setting; -using DotNetBlog.Core.Model.Topic; +using AutoMapper; using DotNetBlog.Core.Entity; using DotNetBlog.Core.Model.Page; +using DotNetBlog.Core.Model.Setting; +using DotNetBlog.Core.Model.Topic; +using DotNetBlog.Web.Areas.Api.Models.Config; +using Microsoft.Extensions.DependencyInjection; namespace DotNetBlog.Web { - public sealed class AutoMapperConfig + public static class AutoMapperConfig { - public static void Configure() + public static void AddAutoMapper(this IServiceCollection services) { - Mapper.Initialize(config => + var mapperConfig = new MapperConfiguration(config => { config.CreateMap(); config.CreateMap(); @@ -32,6 +29,9 @@ public static void Configure() config.CreateMap(); config.CreateMap(); }); + + var mapper = mapperConfig.CreateMapper(); + services.AddSingleton(mapper); } } } diff --git a/src/DotNetBlog.Web/Controllers/AccountController.cs b/src/DotNetBlog.Web/Controllers/AccountController.cs index e3400c2..e0f876e 100644 --- a/src/DotNetBlog.Web/Controllers/AccountController.cs +++ b/src/DotNetBlog.Web/Controllers/AccountController.cs @@ -3,9 +3,6 @@ using DotNetBlog.Web.ViewModels.Account; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Localization; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Controllers @@ -47,7 +44,7 @@ public IActionResult Login(string redirect = null) [HttpPost("login")] [ValidateAntiForgeryToken] - public async Task Login([FromForm]LoginModel model) + public async Task Login([FromForm] LoginModel model) { if (model == null || !ModelState.IsValid) { @@ -103,7 +100,7 @@ public IActionResult ChangePassword() [HttpPost("changepassword")] [Filters.RequireLoginFilter] [ValidateAntiForgeryToken] - public async Task ChangePassword([FromForm]ChangePasswordModel model) + public async Task ChangePassword([FromForm] ChangePasswordModel model) { if (model == null || !ModelState.IsValid) { diff --git a/src/DotNetBlog.Web/Controllers/AdminController.cs b/src/DotNetBlog.Web/Controllers/AdminController.cs index 4cd1a0e..d597b58 100644 --- a/src/DotNetBlog.Web/Controllers/AdminController.cs +++ b/src/DotNetBlog.Web/Controllers/AdminController.cs @@ -1,8 +1,4 @@ using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Controllers { diff --git a/src/DotNetBlog.Web/Controllers/ExceptionController.cs b/src/DotNetBlog.Web/Controllers/ExceptionController.cs index b267c49..f3c65d6 100644 --- a/src/DotNetBlog.Web/Controllers/ExceptionController.cs +++ b/src/DotNetBlog.Web/Controllers/ExceptionController.cs @@ -2,10 +2,6 @@ using DotNetBlog.Web.ViewModels.Exception; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Controllers { diff --git a/src/DotNetBlog.Web/Controllers/HomeController.cs b/src/DotNetBlog.Web/Controllers/HomeController.cs index aebd056..2e5a4af 100644 --- a/src/DotNetBlog.Web/Controllers/HomeController.cs +++ b/src/DotNetBlog.Web/Controllers/HomeController.cs @@ -1,17 +1,15 @@ -using DotNetBlog.Core.Model.Comment; +using DotNetBlog.Core; +using DotNetBlog.Core.Model.Comment; using DotNetBlog.Core.Model.Page; using DotNetBlog.Core.Model.Setting; using DotNetBlog.Core.Model.Topic; using DotNetBlog.Core.Service; using DotNetBlog.Web.ViewModels.Home; using Microsoft.AspNetCore.Mvc; -using System; +using Microsoft.AspNetCore.Mvc.Localization; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.Extensions.Logging; -using DotNetBlog.Core; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Web.Controllers { @@ -39,11 +37,11 @@ public class HomeController : Controller private IHtmlLocalizer L { get; set; } public HomeController( - TopicService topicService, - CategoryService categoryService, - SettingModel settingModel, - TagService tagService, - CommentService commentService, + TopicService topicService, + CategoryService categoryService, + SettingModel settingModel, + TagService tagService, + CommentService commentService, PageService pageService, ClientManager clientManager, IHtmlLocalizer localizer) @@ -276,7 +274,7 @@ private IActionResult PageView(PageModel page) } [HttpPost("comment/add")] - public async Task AddComment([FromForm]AddCommentModel model) + public async Task AddComment([FromForm] AddCommentModel model) { if (model == null || !ModelState.IsValid) { diff --git a/src/DotNetBlog.Web/Controllers/InstallController.cs b/src/DotNetBlog.Web/Controllers/InstallController.cs index abec830..5352307 100644 --- a/src/DotNetBlog.Web/Controllers/InstallController.cs +++ b/src/DotNetBlog.Web/Controllers/InstallController.cs @@ -1,24 +1,12 @@ -using DotNetBlog.Core.Data; -using DotNetBlog.Core.Entity; -using DotNetBlog.Core.Enums; -using DotNetBlog.Core.Model.Widget; +using DotNetBlog.Core.Model.Install; using DotNetBlog.Core.Service; using DotNetBlog.Web.ViewModels.Install; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Localization; -using Microsoft.Extensions.Options; -using Newtonsoft.Json; -using NLog; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Rendering; -using DotNetBlog.Core.Model.Install; using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; namespace DotNetBlog.Web.Controllers { @@ -95,7 +83,7 @@ private IndexViewModel CreateViewModel(InstallModel model) return vm; } - + public override void OnActionExecuting(ActionExecutingContext context) { if (!InstallService.NeedToInstall()) diff --git a/src/DotNetBlog.Web/Controllers/QuickActionController.cs b/src/DotNetBlog.Web/Controllers/QuickActionController.cs index 8f3a9a0..bc58509 100644 --- a/src/DotNetBlog.Web/Controllers/QuickActionController.cs +++ b/src/DotNetBlog.Web/Controllers/QuickActionController.cs @@ -1,9 +1,5 @@ -using DotNetBlog.Core.Model.Comment; -using DotNetBlog.Core.Service; +using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Controllers diff --git a/src/DotNetBlog.Web/DotNetBlog.Web.csproj b/src/DotNetBlog.Web/DotNetBlog.Web.csproj index 212dfae..fff17b3 100644 --- a/src/DotNetBlog.Web/DotNetBlog.Web.csproj +++ b/src/DotNetBlog.Web/DotNetBlog.Web.csproj @@ -2,16 +2,19 @@ 1.2.0 - netcoreapp2.0 - true + netcoreapp3.1 + true true - false + false DotNetBlog.Web Exe DotNetBlog.Web - 2.0 + + + + PreserveNewest @@ -23,6 +26,7 @@ PreserveNewest PreserveNewest + PreserveNewest PreserveNewest @@ -40,13 +44,9 @@ - - - - - - - + + + diff --git a/src/DotNetBlog.Web/Filters/ErrorHandleFilter.cs b/src/DotNetBlog.Web/Filters/ErrorHandleFilter.cs index 196f3a1..47e2030 100644 --- a/src/DotNetBlog.Web/Filters/ErrorHandleFilter.cs +++ b/src/DotNetBlog.Web/Filters/ErrorHandleFilter.cs @@ -11,7 +11,7 @@ public override void OnException(ExceptionContext context) { Logger.Error(context.Exception, context.Exception.Message); - base.OnException(context); + base.OnException(context); } } } diff --git a/src/DotNetBlog.Web/Filters/RequireLoginFilter.cs b/src/DotNetBlog.Web/Filters/RequireLoginFilter.cs index 9cd9f14..1b09d31 100644 --- a/src/DotNetBlog.Web/Filters/RequireLoginFilter.cs +++ b/src/DotNetBlog.Web/Filters/RequireLoginFilter.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using DotNetBlog.Core; +using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; -using DotNetBlog.Core; -using Microsoft.AspNetCore.Mvc; using System.Net; namespace DotNetBlog.Web.Filters @@ -26,7 +22,7 @@ public override void OnActionExecuting(ActionExecutingContext context) } protected virtual void HandleUnauthorizedRequest(ActionExecutingContext context) - { + { string sourceUrl = null; if (context.HttpContext.Request.Path.HasValue) { @@ -41,7 +37,7 @@ protected virtual void HandleUnauthorizedRequest(ActionExecutingContext context) context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized; context.Result = new RedirectToActionResult("Login", "Account", new { redirect = sourceUrl }); - + } } } diff --git a/src/DotNetBlog.Web/Filters/ValidateRequestFilter.cs b/src/DotNetBlog.Web/Filters/ValidateRequestFilter.cs index 7a10e01..928a5e4 100644 --- a/src/DotNetBlog.Web/Filters/ValidateRequestFilter.cs +++ b/src/DotNetBlog.Web/Filters/ValidateRequestFilter.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc.Filters; namespace DotNetBlog.Web.Filters { diff --git a/src/DotNetBlog.Web/Middlewares/ClientManagerMiddleware.cs b/src/DotNetBlog.Web/Middlewares/ClientManagerMiddleware.cs index 6066fcd..76c1eae 100644 --- a/src/DotNetBlog.Web/Middlewares/ClientManagerMiddleware.cs +++ b/src/DotNetBlog.Web/Middlewares/ClientManagerMiddleware.cs @@ -1,11 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using DotNetBlog.Core; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; -using DotNetBlog.Core; +using System.Threading.Tasks; namespace DotNetBlog.Web.Middlewares { diff --git a/src/DotNetBlog.Web/Program.cs b/src/DotNetBlog.Web/Program.cs index ce83f2a..7e5c8fa 100644 --- a/src/DotNetBlog.Web/Program.cs +++ b/src/DotNetBlog.Web/Program.cs @@ -1,9 +1,6 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; +using NLog.Extensions.Hosting; namespace DotNetBlog.Web { @@ -11,17 +8,16 @@ public class Program { public static void Main(string[] args) { - var host = new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIISIntegration() - .UseStartup() -#if DEBUG - .UseUrls("http://0.0.0.0:5000") -#endif - .Build(); + var logger = NLog.LogManager.LoadConfiguration("NLog.config").GetCurrentClassLogger(); - host.Run(); + CreateHostBuilder(args).UseNLog().Build().Run(); } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); } } diff --git a/src/DotNetBlog.Web/Properties/launchSettings.json b/src/DotNetBlog.Web/Properties/launchSettings.json index a2eae21..3bdaf19 100644 --- a/src/DotNetBlog.Web/Properties/launchSettings.json +++ b/src/DotNetBlog.Web/Properties/launchSettings.json @@ -18,7 +18,7 @@ "DotNetBlog.Web": { "commandName": "Project", "launchBrowser": true, - "launchUrl": "http://localhost:10142", + "launchUrl": "http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.en-GB.resx b/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.en-GB.resx index d510f9f..4ec67c0 100644 --- a/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.en-GB.resx +++ b/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.en-GB.resx @@ -118,6 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - MM + {0:MMMM} \ No newline at end of file diff --git a/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.zh-CN.resx b/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.zh-CN.resx index c655e3c..011dc4a 100644 --- a/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.zh-CN.resx +++ b/src/DotNetBlog.Web/Resources/Views/Home/Components/MonthStatisticsWidget/Default.zh-CN.resx @@ -118,6 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - MM月 + {0:MM} 月 \ No newline at end of file diff --git a/src/DotNetBlog.Web/Startup.cs b/src/DotNetBlog.Web/Startup.cs index 5fcc8bc..ae42228 100644 --- a/src/DotNetBlog.Web/Startup.cs +++ b/src/DotNetBlog.Web/Startup.cs @@ -1,24 +1,26 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using DotNetBlog.Core; +using DotNetBlog.Core.Data; +using DotNetBlog.Web.Middlewares; +using DotNetBlog.Web.ViewEngines; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; -using DotNetBlog.Core; -using Microsoft.AspNetCore.Mvc.Formatters; -using Microsoft.Extensions.Logging; -using NLog.Extensions.Logging; -using DotNetBlog.Web.Middlewares; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; -using System.IO; -using System.Globalization; -using Microsoft.AspNetCore.Localization; -using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Threading.Tasks; namespace DotNetBlog.Web { @@ -33,8 +35,6 @@ public Startup() .Build(); } - // This method gets called by the runtime. Use this method to add services to the container. - // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; }); @@ -65,14 +65,12 @@ public void ConfigureServices(IServiceCollection services) opt.UseSqlServer(this.Configuration["connectionString"], builder => { builder.MigrationsAssembly("DotNetBlog.Web"); - builder.UseRowNumberForPaging(); }); }); } services.AddBlogService(); - - AutoMapperConfig.Configure(); + services.AddAutoMapper(); services.Configure( opts => @@ -90,9 +88,6 @@ public void ConfigureServices(IServiceCollection services) opts.SupportedUICultures = supportedCultures; //Uncomment for change language by user - //opts.RequestCultureProviders.Add(new CookieRequestCultureProvider()); - //opts.RequestCultureProviders.Add(new AcceptLanguageHeaderRequestCultureProvider()); - //opts.RequestCultureProviders.Add(new QueryStringRequestCultureProvider() { QueryStringKey = "lang", UIQueryStringKey = "ui-lang" }); opts.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context => { var settingService = context.RequestServices.GetService(); @@ -105,21 +100,33 @@ public void ConfigureServices(IServiceCollection services) { options.ViewLocationExpanders.Add(new ViewEngines.ThemeViewEngine()); }); + + services.AddSpaStaticFiles(configuration => + { + configuration.RootPath = "ClientApp/build"; + }); + + services.AddSingleton(); + } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment enviroment, ILoggerFactory loggerFactory) + public void Configure(IApplicationBuilder app, + IWebHostEnvironment env, + ILoggerFactory loggerFactory, + BlogContext blogContext) { - string uploadFolder = enviroment.ContentRootPath + "/App_Data/upload"; + var uploadFolder = env.ContentRootPath + "/App_Data/upload"; Directory.CreateDirectory(uploadFolder); - if (enviroment.IsDevelopment()) + + if (env.IsDevelopment()) { - string databaseFolder = enviroment.ContentRootPath + "/bin/Debug/netcoreapp2.0/App_Data"; - Directory.CreateDirectory(databaseFolder); + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); } - - var options = app.ApplicationServices.GetService>(); - app.UseRequestLocalization(options.Value); /* Path for static files */ app.UseStaticFiles(); @@ -129,26 +136,32 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment enviroment, I FileProvider = new PhysicalFileProvider(uploadFolder) }); - /* Error page manager */ - if (enviroment.IsDevelopment()) - { - loggerFactory.AddConsole(); - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/exception/500"); - app.UseStatusCodePagesWithReExecute("/exception/{0}"); - } + var options = app.ApplicationServices.GetService>(); + app.UseRequestLocalization(options.Value); + app.UseRouting(); app.UseClientManager(); - app.UseMvc(); + blogContext.Database.EnsureCreated(); + blogContext.Database.Migrate(); - loggerFactory.AddNLog(); - loggerFactory.ConfigureNLog("NLog.config"); + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + endpoints.MapRazorPages(); + }); + + app.UseSpa(spa => + { + spa.Options.SourcePath = "../DotNetBlog.Admin"; - app.ApplicationServices.GetService().Database.EnsureCreated(); + if (env.IsDevelopment()) + { + spa.UseReactDevelopmentServer(npmScript: "start"); + } + }); } } } diff --git a/src/DotNetBlog.Web/TagHelpers/BlogTitleTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/BlogTitleTagHelper.cs index 3f68771..d52b0e5 100644 --- a/src/DotNetBlog.Web/TagHelpers/BlogTitleTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/BlogTitleTagHelper.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; -using Microsoft.AspNetCore.Mvc.ViewFeatures; +using DotNetBlog.Core.Model.Setting; using Microsoft.AspNetCore.Mvc.Rendering; -using DotNetBlog.Core.Model.Setting; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; namespace DotNetBlog.Web.TagHelpers { diff --git a/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs index 2c41e1c..7f91046 100644 --- a/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/MarkdownTagHelper.cs @@ -1,11 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using Microsoft.AspNetCore.Razor.TagHelpers; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Runtime.TagHelpers; -using Microsoft.AspNetCore.Razor.TagHelpers; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.AspNetCore.Mvc.ViewFeatures; namespace DotNetBlog.Web.TagHelpers { diff --git a/src/DotNetBlog.Web/TagHelpers/PageLinkTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/PageLinkTagHelper.cs index 8950141..64dc4c7 100644 --- a/src/DotNetBlog.Web/TagHelpers/PageLinkTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/PageLinkTagHelper.cs @@ -1,13 +1,9 @@ using DotNetBlog.Core.Model.Page; +using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; namespace DotNetBlog.Web.TagHelpers { diff --git a/src/DotNetBlog.Web/TagHelpers/PagerTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/PagerTagHelper.cs index 454dc76..66d4f64 100644 --- a/src/DotNetBlog.Web/TagHelpers/PagerTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/PagerTagHelper.cs @@ -1,14 +1,12 @@ -using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using System; using System.Collections.Generic; -using System.Linq; using System.Text; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Localization; namespace DotNetBlog.Web.TagHelpers { @@ -176,7 +174,7 @@ private string GetPageLink(int page, string text) return $"{text}"; } - private IHtmlLocalizer GetViewLocalizer() + private IHtmlLocalizer GetViewLocalizer() { /* In this way we can connect localization to loaded view */ diff --git a/src/DotNetBlog.Web/TagHelpers/ThemeUrlResolutionTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/ThemeUrlResolutionTagHelper.cs index 012d4c5..dd7eacc 100644 --- a/src/DotNetBlog.Web/TagHelpers/ThemeUrlResolutionTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/ThemeUrlResolutionTagHelper.cs @@ -8,9 +8,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.IO; -using System.Linq; using System.Text.Encodings.Web; -using System.Threading.Tasks; namespace DotNetBlog.Web.TagHelpers { diff --git a/src/DotNetBlog.Web/TagHelpers/TopicLinkTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/TopicLinkTagHelper.cs index 03ce933..001f6bf 100644 --- a/src/DotNetBlog.Web/TagHelpers/TopicLinkTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/TopicLinkTagHelper.cs @@ -3,12 +3,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc.ViewFeatures; -using Microsoft.AspNetCore.Mvc.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.TagHelpers { @@ -55,7 +50,7 @@ public override void Process(TagHelperContext context, TagHelperOutput output) } else { - url = urlHelper.Action("Topic", "Home", new { id = this.Topic.ID }); + url = urlHelper.Action("Topic", "Home", new { id = this.Topic.ID }); } if (!string.IsNullOrWhiteSpace(this.Fragment)) diff --git a/src/DotNetBlog.Web/TagHelpers/VisibleTagHelper.cs b/src/DotNetBlog.Web/TagHelpers/VisibleTagHelper.cs index c6c7522..090edc9 100644 --- a/src/DotNetBlog.Web/TagHelpers/VisibleTagHelper.cs +++ b/src/DotNetBlog.Web/TagHelpers/VisibleTagHelper.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Runtime.TagHelpers; -using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.AspNetCore.Razor.TagHelpers; namespace DotNetBlog.Web.TagHelpers { @@ -20,7 +15,7 @@ public override void Process(TagHelperContext context, TagHelperOutput output) if (output.TagName == "visible") { output.TagName = ""; - } + } if (!this.Condition) { diff --git a/src/DotNetBlog.Web/Themes/default/Home/Components/MonthStatisticsWidget/Default.cshtml b/src/DotNetBlog.Web/Themes/default/Home/Components/MonthStatisticsWidget/Default.cshtml index 63fa393..83242ae 100644 --- a/src/DotNetBlog.Web/Themes/default/Home/Components/MonthStatisticsWidget/Default.cshtml +++ b/src/DotNetBlog.Web/Themes/default/Home/Components/MonthStatisticsWidget/Default.cshtml @@ -13,12 +13,12 @@
      @foreach (var year in groupList) { -
    • +
    • @year.Key
    • diff --git a/src/DotNetBlog.Web/Themes/default/Home/_Layout.cshtml b/src/DotNetBlog.Web/Themes/default/Home/_Layout.cshtml index c3a6eba..6d3696a 100644 --- a/src/DotNetBlog.Web/Themes/default/Home/_Layout.cshtml +++ b/src/DotNetBlog.Web/Themes/default/Home/_Layout.cshtml @@ -71,7 +71,7 @@
      -

      Copyright © 2016 @settingModel.Title - Powered by BlogEngine.NET 3.3.0.1 - Design by FS

      +

      Copyright © 2016 @settingModel.Title - Powered by DotNetBlog 1.3.0 - Design by FS

      diff --git a/src/DotNetBlog.Web/Themes/default/theme.json b/src/DotNetBlog.Web/Themes/default/theme.json index 662171b..e7d8f32 100644 --- a/src/DotNetBlog.Web/Themes/default/theme.json +++ b/src/DotNetBlog.Web/Themes/default/theme.json @@ -1,8 +1,8 @@ { "name": "Default Theme", "description": "-", - "author": "BlogEngine", + "author": "Farzin Seyfolahi", "authorUrl": "https://github.com/scheshan/DotNetBlog", - "authorEmail": "" + "authorEmail": "" } diff --git a/src/DotNetBlog.Web/ViewComponents/PageListNav.cs b/src/DotNetBlog.Web/ViewComponents/PageListNav.cs index 07ecbf3..dac8482 100644 --- a/src/DotNetBlog.Web/ViewComponents/PageListNav.cs +++ b/src/DotNetBlog.Web/ViewComponents/PageListNav.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.ViewComponents diff --git a/src/DotNetBlog.Web/ViewComponents/Widgets.cs b/src/DotNetBlog.Web/ViewComponents/Widgets.cs index 5cf7bde..a375f8a 100644 --- a/src/DotNetBlog.Web/ViewComponents/Widgets.cs +++ b/src/DotNetBlog.Web/ViewComponents/Widgets.cs @@ -1,9 +1,6 @@  using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.ViewComponents diff --git a/src/DotNetBlog.Web/ViewEngines/ThemeResourceLocalizationFactory.cs b/src/DotNetBlog.Web/ViewEngines/ThemeResourceLocalizationFactory.cs new file mode 100644 index 0000000..3ab89a6 --- /dev/null +++ b/src/DotNetBlog.Web/ViewEngines/ThemeResourceLocalizationFactory.cs @@ -0,0 +1,23 @@ +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; + +namespace DotNetBlog.Web.ViewEngines +{ + public class ThemeResourceLocalizationFactory : ResourceManagerStringLocalizerFactory + { + private static string BaseThemeName = nameof(DotNetBlog.Web) + ".Themes."; + private static string BaseViewName = nameof(DotNetBlog.Web) + ".Views."; + + public ThemeResourceLocalizationFactory(IOptions localizationOptions, ILoggerFactory loggerFactory) : base(localizationOptions, loggerFactory) + { + } + + protected override string GetResourcePrefix(string baseResourceName, string baseNamespace) + { + if (baseResourceName.StartsWith(BaseThemeName)) + baseResourceName = BaseViewName + baseResourceName.Substring(baseResourceName.IndexOf(".", BaseThemeName.Length) + 1); + return base.GetResourcePrefix(baseResourceName, baseNamespace); + } + } +} diff --git a/src/DotNetBlog.Web/ViewEngines/ThemeViewEngine.cs b/src/DotNetBlog.Web/ViewEngines/ThemeViewEngine.cs index e3c4378..9e0405c 100644 --- a/src/DotNetBlog.Web/ViewEngines/ThemeViewEngine.cs +++ b/src/DotNetBlog.Web/ViewEngines/ThemeViewEngine.cs @@ -1,10 +1,8 @@ -using Microsoft.AspNetCore.Mvc.Razor; -using System; +using DotNetBlog.Core.Model.Setting; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.Extensions.DependencyInjection; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using DotNetBlog.Core.Model.Setting; namespace DotNetBlog.Web.ViewEngines { diff --git a/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordModel.cs b/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordModel.cs index 80f4979..4175727 100644 --- a/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.ViewModels.Account { diff --git a/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordViewModel.cs b/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordViewModel.cs index 5ccc5f9..05b2628 100644 --- a/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Account/ChangePasswordViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Account +namespace DotNetBlog.Web.ViewModels.Account { public class ChangePasswordViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Account/LoginModel.cs b/src/DotNetBlog.Web/ViewModels/Account/LoginModel.cs index 5fda48f..c5658a4 100644 --- a/src/DotNetBlog.Web/ViewModels/Account/LoginModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Account/LoginModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace DotNetBlog.Web.ViewModels.Account { diff --git a/src/DotNetBlog.Web/ViewModels/Account/LoginViewModel.cs b/src/DotNetBlog.Web/ViewModels/Account/LoginViewModel.cs index 60f4157..e553f0a 100644 --- a/src/DotNetBlog.Web/ViewModels/Account/LoginViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Account/LoginViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Account +namespace DotNetBlog.Web.ViewModels.Account { public class LoginViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Exception/ErrorViewModel.cs b/src/DotNetBlog.Web/ViewModels/Exception/ErrorViewModel.cs index f4cb1e9..67904e9 100644 --- a/src/DotNetBlog.Web/ViewModels/Exception/ErrorViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Exception/ErrorViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Exception +namespace DotNetBlog.Web.ViewModels.Exception { public class ErrorViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/CategoryPageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/CategoryPageViewModel.cs index acc8f5b..423a000 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/CategoryPageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/CategoryPageViewModel.cs @@ -1,8 +1,4 @@ using DotNetBlog.Core.Model.Category; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.ViewModels.Home { diff --git a/src/DotNetBlog.Web/ViewModels/Home/CommentFormModel.cs b/src/DotNetBlog.Web/ViewModels/Home/CommentFormModel.cs index b581a20..3c9c672 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/CommentFormModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/CommentFormModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Home +namespace DotNetBlog.Web.ViewModels.Home { public class CommentFormModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/CommentListViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/CommentListViewModel.cs index 8160215..a996dba 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/CommentListViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/CommentListViewModel.cs @@ -1,9 +1,5 @@ using DotNetBlog.Core.Model.Comment; -using DotNetBlog.Core.Model.Topic; -using System; using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.ViewModels.Home { diff --git a/src/DotNetBlog.Web/ViewModels/Home/IndexPageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/IndexPageViewModel.cs index d673c1b..773f02d 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/IndexPageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/IndexPageViewModel.cs @@ -1,10 +1,4 @@ -using DotNetBlog.Core.Model.Topic; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Home +namespace DotNetBlog.Web.ViewModels.Home { public class IndexPageViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/MonthPageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/MonthPageViewModel.cs index 3ef19e7..acbb792 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/MonthPageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/MonthPageViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Home +namespace DotNetBlog.Web.ViewModels.Home { public class MonthPageViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/NoticePageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/NoticePageViewModel.cs index 89930b2..2900333 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/NoticePageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/NoticePageViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Home +namespace DotNetBlog.Web.ViewModels.Home { public class NoticePageViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/SearchPageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/SearchPageViewModel.cs index 9afabd9..5b26ed9 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/SearchPageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/SearchPageViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Home +namespace DotNetBlog.Web.ViewModels.Home { public class SearchPageViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/TagPageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/TagPageViewModel.cs index 5b6c7d2..84235bd 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/TagPageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/TagPageViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace DotNetBlog.Web.ViewModels.Home +namespace DotNetBlog.Web.ViewModels.Home { public class TagPageViewModel { diff --git a/src/DotNetBlog.Web/ViewModels/Home/TopicListModel.cs b/src/DotNetBlog.Web/ViewModels/Home/TopicListModel.cs index 7655395..0759934 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/TopicListModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/TopicListModel.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Model.Topic; -using System; using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.ViewModels.Home { diff --git a/src/DotNetBlog.Web/ViewModels/Home/TopicPageViewModel.cs b/src/DotNetBlog.Web/ViewModels/Home/TopicPageViewModel.cs index d1092d6..49d316f 100644 --- a/src/DotNetBlog.Web/ViewModels/Home/TopicPageViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Home/TopicPageViewModel.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Model.Comment; using DotNetBlog.Core.Model.Topic; -using System; using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.ViewModels.Home { diff --git a/src/DotNetBlog.Web/ViewModels/Install/IndexViewModel.cs b/src/DotNetBlog.Web/ViewModels/Install/IndexViewModel.cs index 8ec0ccd..aabb149 100644 --- a/src/DotNetBlog.Web/ViewModels/Install/IndexViewModel.cs +++ b/src/DotNetBlog.Web/ViewModels/Install/IndexViewModel.cs @@ -1,9 +1,5 @@ using DotNetBlog.Core.Model.Install; using Microsoft.AspNetCore.Mvc.Rendering; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.ViewModels.Install { diff --git a/src/DotNetBlog.Web/Widgets/AdministrationWidget.cs b/src/DotNetBlog.Web/Widgets/AdministrationWidget.cs index 0e63ff5..99b7803 100644 --- a/src/DotNetBlog.Web/Widgets/AdministrationWidget.cs +++ b/src/DotNetBlog.Web/Widgets/AdministrationWidget.cs @@ -1,9 +1,5 @@ using DotNetBlog.Core.Model.Widget; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets { diff --git a/src/DotNetBlog.Web/Widgets/CategoryWidget.cs b/src/DotNetBlog.Web/Widgets/CategoryWidget.cs index 0269896..2929fe9 100644 --- a/src/DotNetBlog.Web/Widgets/CategoryWidget.cs +++ b/src/DotNetBlog.Web/Widgets/CategoryWidget.cs @@ -2,9 +2,7 @@ using DotNetBlog.Core.Model.Widget; using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets diff --git a/src/DotNetBlog.Web/Widgets/MonthStatisticsWidget.cs b/src/DotNetBlog.Web/Widgets/MonthStatisticsWidget.cs index de720d5..df00b5b 100644 --- a/src/DotNetBlog.Web/Widgets/MonthStatisticsWidget.cs +++ b/src/DotNetBlog.Web/Widgets/MonthStatisticsWidget.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Model.Widget; using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets diff --git a/src/DotNetBlog.Web/Widgets/PageWidget.cs b/src/DotNetBlog.Web/Widgets/PageWidget.cs index 3297fd3..dc0811e 100644 --- a/src/DotNetBlog.Web/Widgets/PageWidget.cs +++ b/src/DotNetBlog.Web/Widgets/PageWidget.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Model.Widget; using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets diff --git a/src/DotNetBlog.Web/Widgets/RecentCommentWidget.cs b/src/DotNetBlog.Web/Widgets/RecentCommentWidget.cs index d2766b8..d99983d 100644 --- a/src/DotNetBlog.Web/Widgets/RecentCommentWidget.cs +++ b/src/DotNetBlog.Web/Widgets/RecentCommentWidget.cs @@ -1,9 +1,6 @@ using DotNetBlog.Core.Model.Widget; using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets diff --git a/src/DotNetBlog.Web/Widgets/RecentTopicWidget.cs b/src/DotNetBlog.Web/Widgets/RecentTopicWidget.cs index fff0cfa..55c19df 100644 --- a/src/DotNetBlog.Web/Widgets/RecentTopicWidget.cs +++ b/src/DotNetBlog.Web/Widgets/RecentTopicWidget.cs @@ -1,8 +1,5 @@ using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets diff --git a/src/DotNetBlog.Web/Widgets/SearchWidget.cs b/src/DotNetBlog.Web/Widgets/SearchWidget.cs index 136efda..fab2c82 100644 --- a/src/DotNetBlog.Web/Widgets/SearchWidget.cs +++ b/src/DotNetBlog.Web/Widgets/SearchWidget.cs @@ -1,9 +1,5 @@ using DotNetBlog.Core.Model.Widget; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace DotNetBlog.Web.Widgets { diff --git a/src/DotNetBlog.Web/Widgets/TagWidget.cs b/src/DotNetBlog.Web/Widgets/TagWidget.cs index 0167e3b..bedbcf8 100644 --- a/src/DotNetBlog.Web/Widgets/TagWidget.cs +++ b/src/DotNetBlog.Web/Widgets/TagWidget.cs @@ -1,8 +1,6 @@ using DotNetBlog.Core.Model.Widget; using DotNetBlog.Core.Service; using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; diff --git a/src/DotNetBlog.Web/bundleconfig.json b/src/DotNetBlog.Web/bundleconfig.json new file mode 100644 index 0000000..c27e267 --- /dev/null +++ b/src/DotNetBlog.Web/bundleconfig.json @@ -0,0 +1,8 @@ +[ + { + "outputFileName": "wwwroot/lib/editor.md/editormd.min.js", + "inputFiles": [ + "wwwroot/lib/editor.md/editormd.js" + ] + } +] diff --git a/src/DotNetBlog.Web/libman.json b/src/DotNetBlog.Web/libman.json new file mode 100644 index 0000000..ceee271 --- /dev/null +++ b/src/DotNetBlog.Web/libman.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "defaultProvider": "cdnjs", + "libraries": [] +} \ No newline at end of file diff --git a/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.js b/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.js index ffd7e8b..6b66813 100644 --- a/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.js +++ b/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.js @@ -1433,12 +1433,21 @@ * @returns {editormd} 返回editormd的实例对象 */ - recreate : function() { + recreate : function(onDone) { var _this = this; var editor = this.editor; var settings = this.settings; - - this.codeMirror.remove(); + + if (!this.codeMirror) { + setTimeout( + function () { + console.log("################### Run background ####################"); + _this.recreate(onDone); + } + , 200); + + return this; + } this.setCodeMirror(); @@ -1456,6 +1465,7 @@ } this.loadedDisplay(true); + if (onDone) onDone(); return this; }, diff --git a/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.min.js b/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.min.js index f810e34..d59098b 100644 --- a/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.min.js +++ b/src/DotNetBlog.Web/wwwroot/lib/editor.md/editormd.min.js @@ -1,3 +1,12 @@ -/*! Editor.md v1.5.0 | editormd.min.js | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-06-09 */ -!function(e){"use strict";"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?module.exports=e:"function"==typeof define?define.amd||define(["jquery"],e):window.editormd=e()}(function(){"use strict";var e="undefined"!=typeof jQuery?jQuery:Zepto;if("undefined"!=typeof e){var t=function(e,i){return new t.fn.init(e,i)};t.title=t.$name="Editor.md",t.version="1.5.0",t.homePage="https://pandao.github.io/editor.md/",t.classPrefix="editormd-",t.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime","emoji","html-entities","pagebreak","|","goto-line","watch","preview","fullscreen","clear","search","|","help","info"],simple:["undo","redo","|","bold","del","italic","quote","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","watch","preview","fullscreen","|","help","info"],mini:["undo","redo","|","watch","preview","|","help","info"]},t.defaults={mode:"gfm",name:"",value:"",theme:"",editorTheme:"default",previewTheme:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:!0,watch:!0,placeholder:"Enjoy Markdown! coding now...",gotoLine:!0,codeFold:!1,autoHeight:!1,autoFocus:!0,autoCloseTags:!0,searchReplace:!0,syncScrolling:!0,readOnly:!1,tabSize:4,indentUnit:4,lineNumbers:!0,lineWrapping:!0,autoCloseBrackets:!0,showTrailingSpace:!0,matchBrackets:!0,indentWithTabs:!0,styleSelectedText:!0,matchWordHighlight:!0,styleActiveLine:!0,dialogLockScreen:!0,dialogShowMask:!0,dialogDraggable:!0,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:!1,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:!1,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:!1,uploadCallbackURL:"",toc:!0,tocm:!1,tocTitle:"",tocDropdown:!1,tocContainer:"",tocStartLevel:1,htmlDecode:!1,pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0,toolbar:!0,toolbarAutoFixed:!0,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return t.toolbarHandlers.ucwords},lowercase:function(){return t.toolbarHandlers.lowercase}},toolbarCustomIcons:{lowercase:'a',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:t.classPrefix+"bold",h2:t.classPrefix+"bold",h3:t.classPrefix+"bold",h4:t.classPrefix+"bold",h5:t.classPrefix+"bold",h6:t.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},lang:{name:"zh-cn",description:"开源在线Markdown编辑器
      Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+t.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}},t.classNames={tex:t.classPrefix+"tex"},t.dialogZindex=99999,t.$katex=null,t.$marked=null,t.$CodeMirror=null,t.$prettyPrint=null;var i,o;t.prototype=t.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(i,o){o=o||{},"object"==typeof i&&(o=i);var r=this.classPrefix=t.classPrefix,n=this.settings=e.extend(!0,t.defaults,o);i="object"==typeof i?n.id:i;var a=this.editor=e("#"+i);this.id=i,this.lang=n.lang;var s=this.classNames={textarea:{html:r+"html-textarea",markdown:r+"markdown-textarea"}};n.pluginPath=""===n.pluginPath?n.path+"../plugins/":n.pluginPath,this.state.watching=n.watch?!0:!1,a.hasClass("editormd")||a.addClass("editormd"),a.css({width:"number"==typeof n.width?n.width+"px":n.width,height:"number"==typeof n.height?n.height+"px":n.height}),n.autoHeight&&a.css("height","auto");var l=this.markdownTextarea=a.children("textarea");l.length<1&&(a.append(""),l=this.markdownTextarea=a.children("textarea")),l.addClass(s.textarea.markdown).attr("placeholder",n.placeholder),("undefined"==typeof l.attr("name")||""===l.attr("name"))&&l.attr("name",""!==n.name?n.name:i+"-markdown-doc");var c=[n.readOnly?"":'',n.saveHTMLToTextarea?'':"",'
      ','
      ','
      '].join("\n");return a.append(c).addClass(r+"vertical"),""!==n.theme&&a.addClass(r+"theme-"+n.theme),this.mask=a.children("."+r+"mask"),this.containerMask=a.children("."+r+"container-mask"),""!==n.markdown&&l.val(n.markdown),""!==n.appendMarkdown&&l.val(l.val()+n.appendMarkdown),this.htmlTextarea=a.children("."+s.textarea.html),this.preview=a.children("."+r+"preview"),this.previewContainer=this.preview.children("."+r+"preview-container"),""!==n.previewTheme&&this.preview.addClass(r+"preview-theme-"+n.previewTheme),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(t.$katex=katex),n.searchReplace&&!n.readOnly&&(t.loadCSS(n.path+"codemirror/addon/dialog/dialog"),t.loadCSS(n.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!n.autoLoadModules?("undefined"!=typeof CodeMirror&&(t.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(t.$marked=marked),this.setCodeMirror().setToolbar().loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,i=this.settings,o=i.path,r=function(){return t.isIE8?void e.loadedDisplay():void(i.flowChart||i.sequenceDiagram?t.loadScript(o+"raphael.min",function(){t.loadScript(o+"underscore.min",function(){!i.flowChart&&i.sequenceDiagram?t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()}):i.flowChart&&!i.sequenceDiagram?t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){e.loadedDisplay()})}):i.flowChart&&i.sequenceDiagram&&t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay())};return t.loadCSS(o+"codemirror/codemirror.min"),i.searchReplace&&!i.readOnly&&(t.loadCSS(o+"codemirror/addon/dialog/dialog"),t.loadCSS(o+"codemirror/addon/search/matchesonscrollbar")),i.codeFold&&t.loadCSS(o+"codemirror/addon/fold/foldgutter"),t.loadScript(o+"codemirror/codemirror.min",function(){t.$CodeMirror=CodeMirror,t.loadScript(o+"codemirror/modes.min",function(){t.loadScript(o+"codemirror/addons.min",function(){return e.setCodeMirror(),"gfm"!==i.mode&&"markdown"!==i.mode?(e.loadedDisplay(),!1):(e.setToolbar(),void t.loadScript(o+"marked.min",function(){t.$marked=marked,i.previewCodeHighlight?t.loadScript(o+"prettify.min",function(){r()}):r()}))})})}),this},setTheme:function(e){var t=this.editor,i=this.settings.theme,o=this.classPrefix+"theme-";return t.removeClass(o+i).addClass(o+e),this.settings.theme=e,this},setEditorTheme:function(e){var i=this.settings;return i.editorTheme=e,"default"!==e&&t.loadCSS(i.path+"codemirror/theme/"+i.editorTheme),this.cm.setOption("theme",e),this},setCodeMirrorTheme:function(e){return this.setEditorTheme(e),this},setPreviewTheme:function(e){var t=this.preview,i=this.settings.previewTheme,o=this.classPrefix+"preview-theme-";return t.removeClass(o+i).addClass(o+e),this.settings.previewTheme=e,this},setCodeMirror:function(){var e=this.settings,i=this.editor;"default"!==e.editorTheme&&t.loadCSS(e.path+"codemirror/theme/"+e.editorTheme);var o={mode:e.mode,theme:e.editorTheme,tabSize:e.tabSize,dragDrop:!1,autofocus:e.autoFocus,autoCloseTags:e.autoCloseTags,readOnly:e.readOnly?"nocursor":!1,indentUnit:e.indentUnit,lineNumbers:e.lineNumbers,lineWrapping:e.lineWrapping,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:e.matchBrackets,indentWithTabs:e.indentWithTabs,styleActiveLine:e.styleActiveLine,styleSelectedText:e.styleSelectedText,autoCloseBrackets:e.autoCloseBrackets,showTrailingSpace:e.showTrailingSpace,highlightSelectionMatches:e.matchWordHighlight?{showToken:"onselected"===e.matchWordHighlight?!1:/\w/}:!1};return this.codeEditor=this.cm=t.$CodeMirror.fromTextArea(this.markdownTextarea[0],o),this.codeMirror=this.cmElement=i.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),e.lineNumbers||this.codeMirror.find(".CodeMirror-gutters").css("border-right","none"),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},gotoLine:function(t){var i=this.settings;if(!i.gotoLine)return this;var o=this.cm,r=(this.editor,o.lineCount()),n=this.preview;if("string"==typeof t&&("last"===t&&(t=r),"first"===t&&(t=1)),"number"!=typeof t)return alert("Error: The line number must be an integer."),this;if(t=parseInt(t)-1,t>r)return alert("Error: The line number range 1-"+r),this;o.setCursor({line:t,ch:0});var a=o.getScrollInfo(),s=a.clientHeight,l=o.charCoords({line:t,ch:0},"local");if(o.scrollTo(null,(l.top+l.bottom-s)/2),i.watch){var c=this.codeMirror.find(".CodeMirror-scroll")[0],h=e(c).height(),d=c.scrollTop,u=d/c.scrollHeight;n.scrollTop(0===d?0:d+h>=c.scrollHeight-16?n[0].scrollHeight:n[0].scrollHeight*u)}return o.focus(),this},extend:function(){return"undefined"!=typeof arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&"undefined"==typeof arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return"undefined"!=typeof i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var o=this.settings;return"object"==typeof t&&(o=e.extend(!0,o,t)),"string"==typeof t&&(o[t]=i),this.settings=o,this.recreate(),this},on:function(t,i){var o=this.settings;return"undefined"!=typeof o["on"+t]&&(o["on"+t]=e.proxy(i,this)),this},off:function(e){var t=this.settings;return"undefined"!=typeof t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=this.settings;return i.readOnly?this:(i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this)},hideToolbar:function(t){var i=this.settings;return i.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,o=this.editor,r=this.toolbar,n=this.settings;"undefined"!=typeof t&&(n.toolbarAutoFixed=t);var a=function(){var t=e(window),i=t.scrollTop();return n.toolbarAutoFixed?void r.css(i-o.offset().top>10&&i
        ';i.append(n),r=this.toolbar=i.children("."+o+"toolbar")}if(!e.toolbar)return r.hide(),this;r.show();for(var a="function"==typeof e.toolbarIcons?e.toolbarIcons():"string"==typeof e.toolbarIcons?t.toolbarModes[e.toolbarIcons]:e.toolbarIcons,s=r.find("."+this.classPrefix+"menu"),l="",c=!1,h=0,d=a.length;d>h;h++){var u=a[h];if("||"===u)c=!0;else if("|"===u)l+='
      • |
      • ';else{var f=/h(\d)/.test(u),g=u;"watch"!==u||e.watch||(g="unwatch");var p=e.lang.toolbar[g],m=e.toolbarIconTexts[g],w=e.toolbarIconsClass[g];p="undefined"==typeof p?"":p,m="undefined"==typeof m?"":m,w="undefined"==typeof w?"":w;var v=c?'
      • ':"
      • ";"undefined"!=typeof e.toolbarCustomIcons[u]&&"function"!=typeof e.toolbarCustomIcons[u]?v+=e.toolbarCustomIcons[u]:(v+='',v+=''+(f?u.toUpperCase():""===w?m:"")+"",v+=""),v+="
      • ",l=c?v+l:l+v}}return s.html(l),s.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),s.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this},dialogLockScreen:function(){return e.proxy(t.dialogLockScreen,this)(),this},dialogShowMask:function(i){return e.proxy(t.dialogShowMask,this)(i),this},getToolbarHandles:function(e){var i=this.toolbarHandlers=t.toolbarHandlers;return e&&"undefined"!=typeof toolbarIconHandlers[e]?i[e]:i},setToolbarHandler:function(){var i=this,o=this.settings;if(!o.toolbar||o.readOnly)return this;var r=this.toolbar,n=this.cm,a=this.classPrefix,s=this.toolbarIcons=r.find("."+a+"menu > li > a"),l=this.getToolbarHandles();return s.bind(t.mouseOrTouch("click","touchend"),function(t){var r=e(this).children(".fa"),a=r.attr("name"),s=n.getCursor(),c=n.getSelection();return""!==a?(i.activeIcon=r,"undefined"!=typeof l[a]?e.proxy(l[a],i)(n):"undefined"!=typeof o.toolbarHandlers[a]&&e.proxy(o.toolbarHandlers[a],i)(n,r,s,c),"link"!==a&&"reference-link"!==a&&"image"!==a&&"code-block"!==a&&"preformatted-text"!==a&&"watch"!==a&&"preview"!==a&&"search"!==a&&"fullscreen"!==a&&"info"!==a&&n.focus(),!1):void 0}),this},createDialog:function(i){return e.proxy(t.createDialog,this)(i)},createInfoDialog:function(){var e=this,i=this.editor,o=this.classPrefix,r=['
        ','
        ','

        '+t.title+"v"+t.version+"

        ","

        "+this.lang.description+"

        ",'

        '+t.homePage+'

        ','

        Copyright © 2015 Pandao, The MIT License.

        ',"
        ",'',"
        "].join("\n");i.append(r);var n=this.infoDialog=i.children("."+o+"dialog-info");return n.find("."+o+"dialog-close").bind(t.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),n.css("border",t.isIE8?"1px solid #ddd":"").css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var i=this.editor,o=this.settings,r=this.infoDialog=i.children("."+this.classPrefix+"dialog-info");return r.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:o.dialogMaskOpacity,backgroundColor:o.dialogMaskBgColor}).show(),r.css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return t.lockScreen(e),this.resize(),this},recreate:function(){var e=this.editor,t=this.settings;return this.codeMirror.remove(),this.setCodeMirror(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.loadedDisplay(!0),this},previewCodeHighlight:function(){var e=this.settings,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){return null===i?this:(this.previewContainer.find("."+t.classNames.tex).each(function(){var i=e(this);t.$katex.render(i.text(),i[0]),i.find(".katex").css("font-size","1.6em")}),this)},flowChartAndSequenceDiagramRender:function(){var i=this,r=this.settings,n=this.previewContainer;if(t.isIE8)return this;if(r.flowChart){if(null===o)return this;n.find(".flowchart").flowChart()}r.sequenceDiagram&&n.find(".sequence-diagram").sequenceDiagram({theme:"simple"});var a=i.preview,s=i.codeMirror,l=s.find(".CodeMirror-scroll"),c=l.height(),h=l.scrollTop(),d=h/l[0].scrollHeight,u=0;a.find(".markdown-toc-list").each(function(){u+=e(this).height()});var f=a.find(".editormd-toc-menu").height();return f=f?f:0,a.scrollTop(0===h?0:h+c>=l[0].scrollHeight-16?a[0].scrollHeight:(a[0].scrollHeight+u+f)*d),this},registerKeyMaps:function(i){var o=this,r=this.cm,n=this.settings,a=t.toolbarHandlers,s=n.disabledKeyMaps;if(i=i||null){for(var l in i)if(e.inArray(l,s)<0){var c={};c[l]=i[l],r.addKeyMap(i)}}else{for(var h in t.keyMaps){var d=t.keyMaps[h],u="string"==typeof d?e.proxy(a[d],o):e.proxy(d,o);if(e.inArray(h,["F9","F10","F11"])<0&&e.inArray(h,s)<0){var f={};f[h]=u,r.addKeyMap(f)}}e(window).keydown(function(t){var i={120:"F9",121:"F10",122:"F11"};if(e.inArray(i[t.keyCode],s)<0)switch(t.keyCode){case 120:return e.proxy(a.watch,o)(),!1;case 121:return e.proxy(a.preview,o)(),!1;case 122:return e.proxy(a.fullscreen,o)(),!1}})}return this},bindScrollEvent:function(){var i=this,o=this.preview,r=this.settings,n=this.codeMirror,a=t.mouseOrTouch;if(!r.syncScrolling)return this;var s=function(){n.find(".CodeMirror-scroll").bind(a("scroll","touchmove"),function(t){var n=e(this).height(),a=e(this).scrollTop(),s=a/e(this)[0].scrollHeight,l=0;o.find(".markdown-toc-list").each(function(){l+=e(this).height()});var c=o.find(".editormd-toc-menu").height();c=c?c:0,o.scrollTop(0===a?0:a+n>=e(this)[0].scrollHeight-16?o[0].scrollHeight:(o[0].scrollHeight+l+c)*s),e.proxy(r.onscroll,i)(t)})},l=function(){n.find(".CodeMirror-scroll").unbind(a("scroll","touchmove"))},c=function(){o.bind(a("scroll","touchmove"),function(t){var o=e(this).height(),a=e(this).scrollTop(),s=a/e(this)[0].scrollHeight,l=n.find(".CodeMirror-scroll");l.scrollTop(0===a?0:a+o>=e(this)[0].scrollHeight?l[0].scrollHeight:l[0].scrollHeight*s),e.proxy(r.onpreviewscroll,i)(t)})},h=function(){o.unbind(a("scroll","touchmove"))};return n.bind({mouseover:s,mouseout:l,touchstart:s,touchend:l}),"single"===r.syncScrolling?this:(o.bind({mouseover:c,mouseout:h,touchstart:c,touchend:h}),this)},bindChangeEvent:function(){var e=this,t=this.cm,o=this.settings;return o.syncScrolling?(t.on("change",function(t,r){o.watch&&e.previewContainer.css("padding",o.autoHeight?"20px 20px 50px 40px":"20px"),i=setTimeout(function(){clearTimeout(i),e.save(),i=null},o.delay)}),this):this},loadedDisplay:function(t){t=t||!1;var i=this,o=this.editor,r=this.preview,n=this.settings;return this.containerMask.hide(),this.save(),n.watch&&r.show(),o.data("oldWidth",o.width()).data("oldHeight",o.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()}),this.bindScrollEvent().bindChangeEvent(),t||e.proxy(n.onload,this)(),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var o=this.state,r=this.editor,n=this.preview,a=this.toolbar,s=this.settings,l=this.codeMirror;if(t&&r.css("width","number"==typeof t?t+"px":t),!s.autoHeight||o.fullscreen||o.preview?(i&&r.css("height","number"==typeof i?i+"px":i),o.fullscreen&&r.height(e(window).height()),s.toolbar&&!s.readOnly?l.css("margin-top",a.height()+1).height(r.height()-a.height()):l.css("margin-top",0).height(r.height())):(r.css("height","auto"),l.css("height","auto")),s.watch)if(l.width(r.width()/2),n.width(o.preview?r.width():r.width()/2),this.previewContainer.css("padding",s.autoHeight?"20px 20px 50px 40px":"20px"),s.toolbar&&!s.readOnly?n.css("top",a.height()+1):n.css("top",0),!s.autoHeight||o.fullscreen||o.preview){var c=s.toolbar&&!s.readOnly?r.height()-a.height():r.height();n.height(c)}else n.height("");else l.width(r.width()),n.hide();return o.loaded&&e.proxy(s.onresize,this)(),this},save:function(){if(null===i)return this;var r=this,n=this.state,a=this.settings,s=this.cm,l=s.getValue(),c=this.previewContainer;if("gfm"!==a.mode&&"markdown"!==a.mode)return this.markdownTextarea.val(l),this;var h=t.$marked,d=this.markdownToC=[],u=this.markedRendererOptions={toc:a.toc,tocm:a.tocm,tocStartLevel:a.tocStartLevel,pageBreak:a.pageBreak,taskList:a.taskList,emoji:a.emoji,tex:a.tex,atLink:a.atLink,emailLink:a.emailLink,flowChart:a.flowChart,sequenceDiagram:a.sequenceDiagram,previewCodeHighlight:a.previewCodeHighlight},f=this.markedOptions={renderer:t.markedRenderer(d,u),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:a.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};h.setOptions(f);var g=t.$marked(l,f);if(g=t.filterHTMLTags(g,a.htmlDecode),this.markdownTextarea.text(l),s.save(),a.saveHTMLToTextarea&&this.htmlTextarea.text(g),a.watch||!a.watch&&n.preview){if(c.html(g),this.previewCodeHighlight(),a.toc){var p=""===a.tocContainer?c:e(a.tocContainer),m=p.find("."+this.classPrefix+"toc-menu");p.attr("previewContainer",""===a.tocContainer?"true":"false"),""!==a.tocContainer&&m.length>0&&m.remove(),t.markdownToCRenderer(d,p,a.tocDropdown,a.tocStartLevel),(a.tocDropdown||p.find("."+this.classPrefix+"toc-menu").length>0)&&t.tocDropdownMenu(p,""!==a.tocTitle?a.tocTitle:this.lang.tocTitle),""!==a.tocContainer&&c.find(".markdown-toc").css("border","none")}a.tex&&(!t.kaTeXLoaded&&a.autoLoadModules?t.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,r.katexRender()}):(t.$katex=katex,this.katexRender())),(a.flowChart||a.sequenceDiagram)&&(o=setTimeout(function(){clearTimeout(o),r.flowChartAndSequenceDiagramRender(),o=null},10)),n.loaded&&e.proxy(a.onchange,this)()}return this},focus:function(){return this.cm.focus(),this},setCursor:function(e){return this.cm.setCursor(e),this},getCursor:function(){return this.cm.getCursor()},setSelection:function(e,t){return this.cm.setSelection(e,t),this},getSelection:function(){return this.cm.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.cm.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},appendMarkdown:function(e){var t=(this.settings,this.cm);return t.setValue(t.getValue()+e),this},setMarkdown:function(e){return this.cm.setValue(e||this.settings.markdown),this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(e){return this.cm.setValue(e),this},clear:function(){return this.cm.setValue(""),this},getHTML:function(){return this.settings.saveHTMLToTextarea?this.htmlTextarea.val():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return this.settings.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(t){var o=this.settings;if(e.inArray(o.mode,["gfm","markdown"])<0)return this;if(this.state.watching=o.watch=!0,this.preview.show(),this.toolbar){var r=o.toolbarIconsClass.watch,n=o.toolbarIconsClass.unwatch,a=this.toolbar.find(".fa[name=watch]");a.parent().attr("title",o.lang.toolbar.watch),a.removeClass(n).addClass(r)}return this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),i=0,this.save().resize(),o.onwatch||(o.onwatch=t||function(){}),e.proxy(o.onwatch,this)(),this},unwatch:function(t){var i=this.settings;if(this.state.watching=i.watch=!1,this.preview.hide(),this.toolbar){var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch,n=this.toolbar.find(".fa[name=watch]");n.parent().attr("title",i.lang.toolbar.unwatch),n.removeClass(o).addClass(r)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var i=this,o=this.editor,r=this.preview,n=this.toolbar,a=this.settings,s=this.codeMirror,l=this.previewContainer;if(e.inArray(a.mode,["gfm","markdown"])<0)return this;a.toolbar&&n&&(n.toggle(),n.find(".fa[name=preview]").toggleClass("active")),s.toggle();var c=function(e){e.shiftKey&&27===e.keyCode&&i.previewed()};"none"===s.css("display")?(this.state.preview=!0,this.state.fullscreen&&r.css("background","#fff"),o.find("."+this.classPrefix+"preview-close-btn").show().bind(t.mouseOrTouch("click","touchend"),function(){i.previewed()}),a.watch?l.css("padding",""):this.save(),l.addClass(this.classPrefix+"preview-active"),r.show().css({position:"",top:0,width:o.width(),height:a.autoHeight&&!this.state.fullscreen?"auto":o.height()}),this.state.loaded&&e.proxy(a.onpreviewing,this)(),e(window).bind("keyup",c)):(e(window).unbind("keyup",c),this.previewed())},previewed:function(){var i=this.editor,o=this.preview,r=this.toolbar,n=this.settings,a=this.previewContainer,s=i.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,this.codeMirror.show(),n.toolbar&&r.show(),o[n.watch?"show":"hide"](),s.hide().unbind(t.mouseOrTouch("click","touchend")),a.removeClass(this.classPrefix+"preview-active"),n.watch&&a.css("padding","20px"),o.css({background:null,position:"absolute",width:i.width()/2,height:n.autoHeight&&!this.state.fullscreen?"auto":i.height()-r.height(),top:n.toolbar?r.height():0}),this.state.loaded&&e.proxy(n.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.state,o=this.editor,r=(this.preview,this.toolbar),n=this.settings,a=this.classPrefix+"fullscreen";r&&r.find(".fa[name=fullscreen]").parent().toggleClass("active");var s=function(e){e.shiftKey||27!==e.keyCode||i.fullscreen&&t.fullscreenExit()};return o.hasClass(a)?(e(window).unbind("keyup",s),this.fullscreenExit()):(i.fullscreen=!0,e("html,body").css("overflow","hidden"),o.css({width:e(window).width(),height:e(window).height()}).addClass(a),this.resize(),e.proxy(n.onfullscreen,this)(),e(window).bind("keyup",s)),this},fullscreenExit:function(){var t=this.editor,i=this.settings,o=this.toolbar,r=this.classPrefix+"fullscreen";return this.state.fullscreen=!1,o&&o.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({width:t.data("oldWidth"),height:t.data("oldHeight")}).removeClass(r),this.resize(),e.proxy(i.onfullscreenExit,this)(),this},executePlugin:function(i,o){var r=this,n=this.cm,a=this.settings;return o=a.pluginPath+o,"function"==typeof define?"undefined"==typeof this[i]?(alert("Error: "+i+" plugin is not found, you are not load this plugin."),this):(this[i](n),this):(e.inArray(o,t.loadFiles.plugin)<0?t.loadPlugin(o,function(){t.loadPlugins[i]=r[i],r[i](n)}):e.proxy(t.loadPlugins[i],this)(n),this)},search:function(e){var t=this.settings;return t.searchReplace?(t.readOnly||this.cm.execCommand(e||"find"),this):(alert("Error: settings.searchReplace == false"),this)},searchReplace:function(){return this.search("replace"),this},searchReplaceAll:function(){return this.search("replaceAll"),this}},t.fn.init.prototype=t.fn,t.dialogLockScreen=function(){var t=this.settings||{dialogLockScreen:!0};t.dialogLockScreen&&(e("html,body").css("overflow","hidden"),this.resize())},t.dialogShowMask=function(t){var i=this.editor,o=this.settings||{dialogShowMask:!0};t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),o.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},t.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("> "+i),e.setCursor(t.line,t.ch+2)):e.replaceSelection("> "+i)},ucfirst:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.firstUpperCase(i)),e.setSelections(o)},ucwords:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.wordsFirstUpperCase(i)),e.setSelections(o)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("# "+i),e.setCursor(t.line,t.ch+2)):e.replaceSelection("# "+i)},h2:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0), -e.replaceSelection("## "+i),e.setCursor(t.line,t.ch+3)):e.replaceSelection("## "+i)},h3:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("### "+i),e.setCursor(t.line,t.ch+4)):e.replaceSelection("### "+i)},h4:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("#### "+i),e.setCursor(t.line,t.ch+5)):e.replaceSelection("#### "+i)},h5:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("##### "+i),e.setCursor(t.line,t.ch+6)):e.replaceSelection("##### "+i)},h6:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("###### "+i),e.setCursor(t.line,t.ch+7)):e.replaceSelection("###### "+i)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":"- "+i[o];e.replaceSelection(i.join("\n"))}},"list-ol":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("1. "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":o+1+". "+i[o];e.replaceSelection(i.join("\n"))}},hr:function(){{var e=this.cm,t=e.getCursor();e.getSelection()}e.replaceSelection((0!==t.ch?"\n\n":"\n")+"------------\n\n")},tex:function(){if(!this.settings.tex)return alert("settings.tex === false"),this;var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("$$"+i+"$$"),""===i&&e.setCursor(t.line,t.ch+2)},link:function(){this.executePlugin("linkDialog","link-dialog/link-dialog")},"reference-link":function(){this.executePlugin("referenceLinkDialog","reference-link-dialog/reference-link-dialog")},pagebreak:function(){if(!this.settings.pageBreak)return alert("settings.pageBreak === false"),this;{var e=this.cm;e.getSelection()}e.replaceSelection("\r\n[========]\r\n")},image:function(){this.executePlugin("imageDialog","image-dialog/image-dialog")},code:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("`"+i+"`"),""===i&&e.setCursor(t.line,t.ch+1)},"code-block":function(){this.executePlugin("codeBlockDialog","code-block-dialog/code-block-dialog")},"preformatted-text":function(){this.executePlugin("preformattedTextDialog","preformatted-text-dialog/preformatted-text-dialog")},table:function(){this.executePlugin("tableDialog","table-dialog/table-dialog")},datetime:function(){var e=this.cm,i=(e.getSelection(),new Date,this.settings.lang.name),o=t.dateFormat()+" "+t.dateFormat("zh-cn"===i||"zh-tw"===i?"cn-week-day":"week-day");e.replaceSelection(o)},emoji:function(){this.executePlugin("emojiDialog","emoji-dialog/emoji-dialog")},"html-entities":function(){this.executePlugin("htmlEntitiesDialog","html-entities-dialog/html-entities-dialog")},"goto-line":function(){this.executePlugin("gotoLineDialog","goto-line-dialog/goto-line-dialog")},watch:function(){this[this.settings.watch?"unwatch":"watch"]()},preview:function(){this.previewing()},fullscreen:function(){this.fullscreen()},clear:function(){this.clear()},search:function(){this.search()},help:function(){this.executePlugin("helpDialog","help-dialog/help-dialog")},info:function(){this.showInfoDialog()}},t.keyMaps={"Ctrl-1":"h1","Ctrl-2":"h2","Ctrl-3":"h3","Ctrl-4":"h4","Ctrl-5":"h5","Ctrl-6":"h6","Ctrl-B":"bold","Ctrl-D":"datetime","Ctrl-E":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();return this.settings.emoji?(e.replaceSelection(":"+i+":"),void(""===i&&e.setCursor(t.line,t.ch+1))):void alert("Error: settings.emoji == false")},"Ctrl-Alt-G":"goto-line","Ctrl-H":"hr","Ctrl-I":"italic","Ctrl-K":"code","Ctrl-L":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-U":"list-ul","Shift-Ctrl-A":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();return this.settings.atLink?(e.replaceSelection("@"+i),void(""===i&&e.setCursor(t.line,t.ch+1))):void alert("Error: settings.atLink == false")},"Shift-Ctrl-C":"code","Shift-Ctrl-Q":"quote","Shift-Ctrl-S":"del","Shift-Ctrl-K":"tex","Shift-Alt-C":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(["```",i,"```"].join("\n")),""===i&&e.setCursor(t.line,t.ch+3)},"Shift-Ctrl-Alt-C":"code-block","Shift-Ctrl-H":"html-entities","Shift-Alt-H":"help","Shift-Ctrl-E":"emoji","Shift-Ctrl-U":"uppercase","Shift-Alt-U":"ucwords","Shift-Ctrl-Alt-U":"ucfirst","Shift-Alt-L":"lowercase","Shift-Ctrl-I":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("!["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+4)},"Shift-Ctrl-Alt-I":"image","Shift-Ctrl-L":"link","Shift-Ctrl-O":"list-ol","Shift-Ctrl-P":"preformatted-text","Shift-Ctrl-T":"table","Shift-Alt-P":"pagebreak",F9:"watch",F10:"preview",F11:"fullscreen"};var r=function(e){return String.prototype.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};t.trim=r;var n=function(e){return e.toLowerCase().replace(/\b(\w)|\s(\w)/g,function(e){return e.toUpperCase()})};t.ucwords=t.wordsFirstUpperCase=n;var a=function(e){return e.toLowerCase().replace(/\b(\w)/,function(e){return e.toUpperCase()})};return t.firstUpperCase=t.ucfirst=a,t.urls={atLinkBase:"https://github.com/"},t.regexs={atLink:/@(\w+)/g,email:/(\w+)@(\w+)\.(\w+)\.?(\w+)?/g,emailLink:/(mailto:)?([\w\.\_]+)@(\w+)\.(\w+)\.?(\w+)?/g,emoji:/:([\w\+-]+):/g,emojiDatetime:/(\d{2}:\d{2}:\d{2})/g,twemoji:/:(tw-([\w]+)-?(\w+)?):/g,fontAwesome:/:(fa-([\w]+)(-(\w+)){0,}):/g,editormdLogo:/:(editormd-logo-?(\w+)?):/g,pageBreak:/^\[[=]{8,}\]$/},t.emoji={path:"http://www.emoji-cheat-sheet.com/graphics/emojis/",ext:".png"},t.twemoji={path:"http://twemoji.maxcdn.com/36x36/",ext:".png"},t.markedRenderer=function(i,o){var n={toc:!0,tocm:!1,tocStartLevel:1,pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1},a=e.extend(n,o||{}),s=t.$marked,l=new s.Renderer;i=i||[];var c=t.regexs,h=c.atLink,d=c.emoji,u=c.email,f=c.emailLink,g=c.twemoji,p=c.fontAwesome,m=c.editormdLogo,w=c.pageBreak;return l.emoji=function(e){e=e.replace(t.regexs.emojiDatetime,function(e){return e.replace(/:/g,":")});var i=e.match(d);if(!i||!a.emoji)return e;for(var o=0,r=i.length;r>o;o++)":+1:"===i[o]&&(i[o]=":\\+1:"),e=e.replace(new RegExp(i[o]),function(e,i){var o=e.match(p),r=e.replace(/:/g,"");if(o)for(var n=0,a=o.length;a>n;n++){var s=o[n].replace(/:/g,"");return''}else{var l=e.match(m),c=e.match(g);if(l)for(var h=0,d=l.length;d>h;h++){var u=l[h].replace(/:/g,"");return''}else{if(!c){var f="+1"===r?"plus1":r;return f="black_large_square"===f?"black_square":f,f="moon"===f?"waxing_gibbous_moon":f,':'+r+':'}for(var w=0,v=c.length;v>w;w++){var k=c[w].replace(/:/g,"").replace("tw-","");return'twemoji-'+k+''}}}});return e},l.atLink=function(i){return h.test(i)?(a.atLink&&(i=i.replace(u,function(e,t,i,o){return e.replace(/@/g,"_#_@_#_")}),i=i.replace(h,function(e,i){return''+e+""}).replace(/_#_@_#_/g,"@")),a.emailLink&&(i=i.replace(f,function(t,i,o,r,n){return!i&&e.inArray(n,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+t+"":t})),i):i},l.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(r){return""}if(0===o.indexOf("javascript:"))return""}var n=''+i.replace(/@/g,"@")+""):(t&&(n+=' title="'+t+'"'),n+=">"+i+"")},l.heading=function(e,t,o){var n=e,a=/\s*\]*)\>(.*)\<\/a\>\s*/;if(a.test(e)){var s=[];e=e.split(/\]+)\>([^\>]*)\<\/a\>/);for(var l=0,c=e.length;c>l;l++)s.push(e[l].replace(/\s*href\=\"(.*)\"\s*/g,""));e=s.join(" ")}e=r(e);var h=e.toLowerCase().replace(/[^\w]+/g,"-"),d={text:e,level:t,slug:h},u=/^[\u4e00-\u9fa5]+$/.test(e),f=u?escape(e).replace(/\%/g,""):e.toLowerCase().replace(/[^\w]+/g,"-");i.push(d);var g="';return g+='',g+='',g+=this.atLink(a?this.emoji(n):this.emoji(e)),g+=""},l.pageBreak=function(e){return w.test(e)&&a.pageBreak&&(e='
        '),e},l.paragraph=function(e){var i=/\$\$(.*)\$\$/g.test(e),o=/^\$\$(.*)\$\$$/.test(e),r=o?' class="'+t.classNames.tex+'"':"",n=a.tocm?/^(\[TOC\]|\[TOCM\])$/.test(e):/^\[TOC\]$/.test(e),s=/^\[TOCM\]$/.test(e);e=!o&&i?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,i){return''+i.replace(/\$/g,"")+""}):o?e.replace(/\$/g,""):e;var l='
        '+e+"
        ";return n?s?'
        '+l+"

        ":l:w.test(e)?this.pageBreak(e):""+this.atLink(this.emoji(e))+"

        \n"},l.code=function(e,i,o){return"seq"===i||"sequence"===i?'
        '+e+"
        ":"flow"===i?'
        '+e+"
        ":"math"===i||"latex"===i||"katex"===i?'

        '+e+"

        ":s.Renderer.prototype.code.apply(this,arguments)},l.tablecell=function(e,t){var i=t.header?"th":"td",o=t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">";return o+this.atLink(this.emoji(e))+"\n"},l.listitem=function(e){return a.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'
      • '+this.atLink(this.emoji(e))+"
      • "):"
      • "+this.atLink(this.emoji(e))+"
      • "},l},t.markdownToCRenderer=function(e,t,i,o){var r="",n=0,a=this.classPrefix;o=o||1;for(var s=0,l=e.length;l>s;s++){var c=e[s].text,h=e[s].level;o>h||(r+=h>n?"":n>h?new Array(n-h+2).join("
      "):"",r+='
    • '+c+"