diff --git a/build/install/common/build-frontend.sh b/build/install/common/build-frontend.sh index a88f31446f..95b0c77ba2 100644 --- a/build/install/common/build-frontend.sh +++ b/build/install/common/build-frontend.sh @@ -35,3 +35,4 @@ echo "== FRONT-END-BUILD ==" cd ${SRC_PATH} yarn install yarn build +yarn deploy diff --git a/build/install/docker/Dockerfile-app b/build/install/docker/Dockerfile-app index ecf64d9dae..97377ae628 100644 --- a/build/install/docker/Dockerfile-app +++ b/build/install/docker/Dockerfile-app @@ -29,8 +29,10 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \ adduser -uid 104 --quiet --home /var/www/onlyoffice --system --gid 107 onlyoffice && \ locale-gen en_US.UTF-8 && \ apt-get -y update && \ - apt-get install -yq git apt-utils npm nodejs && \ - npm install --global yarn + apt-get install -yq git apt-utils npm && \ + npm install --global yarn && \ + curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - && \ + apt-get install -y nodejs RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \ echo ${GIT_BRANCH} && \ @@ -38,7 +40,6 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \ cd ${SRC_PATH} && \ - mkdir -p /var/www/public/ && cp -rf public/* /var/www/public/ && \ mkdir -p /app/onlyoffice/config/ && cp -rf config/* /app/onlyoffice/config/ && \ mkdir -p /etc/nginx/conf.d && cp -f config/nginx/onlyoffice*.conf /etc/nginx/conf.d/ && \ mkdir -p /etc/nginx/includes/ && cp -f config/nginx/includes/onlyoffice*.conf /etc/nginx/includes/ && \ @@ -115,17 +116,9 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \ # copy static services files and config values COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d COPY --from=base /etc/nginx/includes /etc/nginx/includes -COPY --from=base /var/www/public /var/www/public -COPY --from=base ${SRC_PATH}/products/ASC.CRM/Client/dist ${BUILD_PATH}/products/ASC.CRM/client -COPY --from=base ${SRC_PATH}/web/ASC.Web.Editor/dist ${BUILD_PATH}/products/ASC.Files/editor -COPY --from=base ${SRC_PATH}/products/ASC.Files/Client/dist ${BUILD_PATH}/products/ASC.Files/client -COPY --from=base ${SRC_PATH}/web/ASC.Web.Login/dist ${BUILD_PATH}/studio/login -COPY --from=base ${SRC_PATH}/products/ASC.People/Client/dist ${BUILD_PATH}/products/ASC.People/client -COPY --from=base ${SRC_PATH}/products/ASC.Projects/Client/dist ${BUILD_PATH}/products/ASC.Projects/client -COPY --from=base ${SRC_PATH}/web/ASC.Web.Client/dist ${BUILD_PATH}/studio/client -COPY --from=base ${SRC_PATH}/products/ASC.Calendar/Client/dist ${BUILD_PATH}/products/ASC.Calendar/client -COPY --from=base ${SRC_PATH}/products/ASC.Mail/Client/dist ${BUILD_PATH}/products/ASC.Mail/client - +COPY --from=base ${SRC_PATH}/build/deploy/products ${BUILD_PATH}/products +COPY --from=base ${SRC_PATH}/build/deploy/public ${BUILD_PATH}/public +COPY --from=base ${SRC_PATH}/build/deploy/studio ${BUILD_PATH}/studio COPY /config/nginx/templates/upstream.conf.template /etc/nginx/templates/upstream.conf.template COPY /config/nginx/templates/nginx.conf.template /etc/nginx/nginx.conf.template COPY prepare-nginx-proxy.sh /docker-entrypoint.d/prepare-nginx-proxy.sh diff --git a/common/ASC.Common/Utils/TimeZoneConverter/TimeZoneConverter.cs b/common/ASC.Common/Utils/TimeZoneConverter/TimeZoneConverter.cs index 44df144bdc..6a3ab2d8dd 100644 --- a/common/ASC.Common/Utils/TimeZoneConverter/TimeZoneConverter.cs +++ b/common/ASC.Common/Utils/TimeZoneConverter/TimeZoneConverter.cs @@ -147,6 +147,11 @@ namespace ASC.Common.Utils public TimeZoneInfo GetTimeZone(string timeZoneId, bool defaultIfNoMatch = true) { var defaultTimezone = GetTimeZoneDefault(); + + if (string.IsNullOrEmpty(timeZoneId)) + { + return defaultIfNoMatch ? defaultTimezone : null; + } try { diff --git a/common/services/ASC.ElasticSearch/Service/Launcher.cs b/common/services/ASC.ElasticSearch/Service/Launcher.cs index d9b71c32f5..d8d5f61b8f 100644 --- a/common/services/ASC.ElasticSearch/Service/Launcher.cs +++ b/common/services/ASC.ElasticSearch/Service/Launcher.cs @@ -34,8 +34,6 @@ using ASC.Common.Caching; using ASC.Common.Logging; using ASC.ElasticSearch.Service; -using Autofac; - using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; @@ -49,7 +47,6 @@ namespace ASC.ElasticSearch private ICacheNotify Notify { get; } private ICacheNotify IndexNotify { get; } private IServiceProvider ServiceProvider { get; } - public ILifetimeScope Container { get; } private bool IsStarted { get; set; } private CancellationTokenSource CancellationTokenSource { get; set; } private Timer Timer { get; set; } @@ -60,14 +57,12 @@ namespace ASC.ElasticSearch ICacheNotify notify, ICacheNotify indexNotify, IServiceProvider serviceProvider, - ILifetimeScope container, Settings settings) { Log = options.Get("ASC.Indexer"); Notify = notify; IndexNotify = indexNotify; ServiceProvider = serviceProvider; - Container = container; CancellationTokenSource = new CancellationTokenSource(); Period = TimeSpan.FromMinutes(settings.Period.Value); } @@ -137,13 +132,19 @@ namespace ASC.ElasticSearch Timer.Change(Timeout.Infinite, Timeout.Infinite); IsStarted = true; - using var scope = Container.BeginLifetimeScope(); - var wrappers = scope.Resolve>(); - - Parallel.ForEach(wrappers, w => + using (var scope = ServiceProvider.CreateScope()) { - IndexProduct(w, reindex); - }); + var wrappers = scope.ServiceProvider.GetService>(); + + Parallel.ForEach(wrappers, wrapper => + { + using (var scope = ServiceProvider.CreateScope()) + { + var w = (IFactoryIndexer)scope.ServiceProvider.GetService(wrapper.GetType()); + IndexProduct(w, reindex); + } + }); + } Timer.Change(Period, Period); IndexNotify.Publish(new IndexAction() { Indexing = "", LastIndexed = DateTime.Now.Ticks }, CacheNotifyAction.Any); diff --git a/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs b/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs index 8a34278e68..4d50b3b23b 100644 --- a/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs +++ b/common/services/ASC.Feed.Aggregator/Service/FeedAggregatorService.cs @@ -64,18 +64,15 @@ namespace ASC.Feed.Aggregator private ConfigurationExtension Configuration { get; } private IServiceProvider ServiceProvider { get; } - public ILifetimeScope Container { get; } public FeedAggregatorService( ConfigurationExtension configuration, IServiceProvider serviceProvider, - ILifetimeScope container, IOptionsMonitor optionsMonitor, IOptionsSnapshot optionsSnapshot) { Configuration = configuration; ServiceProvider = serviceProvider; - Container = container; Log = optionsMonitor.Get("ASC.Feed.Agregator"); SignalrServiceClient = optionsSnapshot.Get("counters"); } @@ -129,8 +126,7 @@ namespace ASC.Feed.Aggregator Log.DebugFormat("Start of collecting feeds..."); var unreadUsers = new Dictionary>(); - using var autofacScope = Container.BeginLifetimeScope(); - var modules = autofacScope.Resolve>(); + var modules = scope.ServiceProvider.GetService>(); foreach (var module in modules) { diff --git a/config/workbox-config.js b/config/workbox-config.js index 74b1fba888..927f2c8356 100644 --- a/config/workbox-config.js +++ b/config/workbox-config.js @@ -3,6 +3,7 @@ module.exports = { globPatterns: [ '**/*.{ico,woff2,svg,html,json,js,png}' ], + globIgnores: ['**/remoteEntry.js'], swSrc: 'packages/asc-web-common/utils/sw-template.js', swDest: 'build/deploy/public/sw.js' }; \ No newline at end of file diff --git a/packages/asc-web-common/utils/getUTCString.js b/packages/asc-web-common/utils/getUTCString.js new file mode 100644 index 0000000000..5b8d17a946 --- /dev/null +++ b/packages/asc-web-common/utils/getUTCString.js @@ -0,0 +1,6 @@ +const getUTCString = function () { + const utc = new Date(); + return utc.toISOString(); +}; + +module.exports = getUTCString; diff --git a/products/ASC.CRM/Client/package.json b/products/ASC.CRM/Client/package.json index 0545b3189f..ee3b1c6372 100644 --- a/products/ASC.CRM/Client/package.json +++ b/products/ASC.CRM/Client/package.json @@ -24,6 +24,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/products/ASC.CRM/Client/webpack.config.js b/products/ASC.CRM/Client/webpack.config.js index 553599c73c..c9e58d9fe0 100644 --- a/products/ASC.CRM/Client/webpack.config.js +++ b/products/ASC.CRM/Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -131,11 +133,11 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "crm", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -153,6 +155,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/products/ASC.Calendar/Client/package.json b/products/ASC.Calendar/Client/package.json index e74b3ac7a9..62aa1e9f34 100644 --- a/products/ASC.Calendar/Client/package.json +++ b/products/ASC.Calendar/Client/package.json @@ -24,6 +24,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/products/ASC.Calendar/Client/webpack.config.js b/products/ASC.Calendar/Client/webpack.config.js index b1bf5e4ba6..29979f8f7a 100644 --- a/products/ASC.Calendar/Client/webpack.config.js +++ b/products/ASC.Calendar/Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -131,11 +133,11 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "calendar", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -153,6 +155,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/products/ASC.Files/Client/package.json b/products/ASC.Files/Client/package.json index febbccc1e8..b85340e4c0 100644 --- a/products/ASC.Files/Client/package.json +++ b/products/ASC.Files/Client/package.json @@ -24,6 +24,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "interpolate-html-plugin": "^4.0.0", diff --git a/products/ASC.Files/Client/webpack.config.js b/products/ASC.Files/Client/webpack.config.js index f4eb75850d..7749ba8ce7 100644 --- a/products/ASC.Files/Client/webpack.config.js +++ b/products/ASC.Files/Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -131,15 +133,15 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "files", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, people: `people@${combineUrl( AppServerConfig.proxyURL, - "/products/people/remoteEntry.js" + `/products/people/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -158,6 +160,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/products/ASC.Files/Core/Core/Search/FactoryIndexerFile.cs b/products/ASC.Files/Core/Core/Search/FactoryIndexerFile.cs index ce07c1510a..ff5f4b9fd0 100644 --- a/products/ASC.Files/Core/Core/Search/FactoryIndexerFile.cs +++ b/products/ASC.Files/Core/Core/Search/FactoryIndexerFile.cs @@ -165,7 +165,11 @@ namespace ASC.Web.Files.Core.Search j = 0; } } - + } + + if(tasks.Any()) + { + Task.WaitAll(tasks.ToArray()); } } catch (Exception e) diff --git a/products/ASC.Files/Core/Core/Search/FactoryIndexerFolder.cs b/products/ASC.Files/Core/Core/Search/FactoryIndexerFolder.cs index 3b710d7d4f..63c6245604 100644 --- a/products/ASC.Files/Core/Core/Search/FactoryIndexerFolder.cs +++ b/products/ASC.Files/Core/Core/Search/FactoryIndexerFolder.cs @@ -153,7 +153,11 @@ namespace ASC.Web.Files.Core.Search j = 0; } } - + } + + if (tasks.Any()) + { + Task.WaitAll(tasks.ToArray()); } } catch (Exception e) diff --git a/products/ASC.Mail/Client/package.json b/products/ASC.Mail/Client/package.json index 6dcdfa6670..53679f88da 100644 --- a/products/ASC.Mail/Client/package.json +++ b/products/ASC.Mail/Client/package.json @@ -24,6 +24,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/products/ASC.Mail/Client/webpack.config.js b/products/ASC.Mail/Client/webpack.config.js index 3becb91379..4fd3743a37 100644 --- a/products/ASC.Mail/Client/webpack.config.js +++ b/products/ASC.Mail/Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -131,11 +133,11 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "mail", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -153,6 +155,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/products/ASC.People/Client/package.json b/products/ASC.People/Client/package.json index 2917a96973..e92e3e57fe 100644 --- a/products/ASC.People/Client/package.json +++ b/products/ASC.People/Client/package.json @@ -24,6 +24,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/products/ASC.People/Client/webpack.config.js b/products/ASC.People/Client/webpack.config.js index 16bd8b915f..4b742b3649 100644 --- a/products/ASC.People/Client/webpack.config.js +++ b/products/ASC.People/Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -131,15 +133,15 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "people", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, people: `people@${combineUrl( AppServerConfig.proxyURL, - "/products/people/remoteEntry.js" + `/products/people/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -162,6 +164,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/products/ASC.Projects/Client/package.json b/products/ASC.Projects/Client/package.json index 9408a3bef3..2c8cd64e69 100644 --- a/products/ASC.Projects/Client/package.json +++ b/products/ASC.Projects/Client/package.json @@ -24,6 +24,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/products/ASC.Projects/Client/webpack.config.js b/products/ASC.Projects/Client/webpack.config.js index dbc8bcb0e8..52e6dccb14 100644 --- a/products/ASC.Projects/Client/webpack.config.js +++ b/products/ASC.Projects/Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -131,11 +133,11 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "projects", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -153,6 +155,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/web/ASC.Web.Client/package.json b/web/ASC.Web.Client/package.json index 8cc10ee4ca..4af88a0e55 100644 --- a/web/ASC.Web.Client/package.json +++ b/web/ASC.Web.Client/package.json @@ -23,6 +23,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/web/ASC.Web.Client/src/Shell.jsx b/web/ASC.Web.Client/src/Shell.jsx index 7d2dcdb111..4ce14b2f77 100644 --- a/web/ASC.Web.Client/src/Shell.jsx +++ b/web/ASC.Web.Client/src/Shell.jsx @@ -23,6 +23,9 @@ import System from "./components/System"; import { AppServerConfig } from "@appserver/common/constants"; import Snackbar from "@appserver/components/snackbar"; import moment from "moment"; +import getUTCString from "../../../packages/asc-web-common/utils/getUTCString"; + +const utcString = getUTCString(); const { proxyURL } = AppServerConfig; const homepage = config.homepage; @@ -355,7 +358,7 @@ const Shell = ({ items = [], page = "home", ...rest }) => { const remoteEntryURL = combineUrl( window.location.origin, appURL, - "remoteEntry.js" + `remoteEntry.js?__hash=${utcString}` ); const system = { diff --git a/web/ASC.Web.Client/webpack.config.js b/web/ASC.Web.Client/webpack.config.js index 61ef1f8f61..e3a73fddad 100644 --- a/web/ASC.Web.Client/webpack.config.js +++ b/web/ASC.Web.Client/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const path = require("path"); @@ -128,19 +130,19 @@ const config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "studio", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { studio: `studio@${combineUrl( AppServerConfig.proxyURL, - "/remoteEntry.js" + `/remoteEntry.js?__hash=${getUTCString()}` )}`, login: `login@${combineUrl( AppServerConfig.proxyURL, - "/login/remoteEntry.js" + `/login/remoteEntry.js?__hash=${getUTCString()}` )}`, people: `people@${combineUrl( AppServerConfig.proxyURL, - "/products/people/remoteEntry.js" + `/products/people/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -170,6 +172,7 @@ const config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/web/ASC.Web.Editor/package.json b/web/ASC.Web.Editor/package.json index 6dca9d317e..222571b68f 100644 --- a/web/ASC.Web.Editor/package.json +++ b/web/ASC.Web.Editor/package.json @@ -23,6 +23,7 @@ "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/web/ASC.Web.Editor/webpack.config.js b/web/ASC.Web.Editor/webpack.config.js index 823e6f5ba7..dd6b0a39c2 100644 --- a/web/ASC.Web.Editor/webpack.config.js +++ b/web/ASC.Web.Editor/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const { proxyURL } = AppServerConfig; @@ -133,12 +135,15 @@ const config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "editor", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { - studio: `studio@${combineUrl(proxyURL, "/remoteEntry.js")}`, + studio: `studio@${combineUrl( + proxyURL, + `/remoteEntry.js?__hash=${getUTCString()}` + )}`, files: `files@${combineUrl( proxyURL, - "/products/files/remoteEntry.js" + `/products/files/remoteEntry.js?__hash=${getUTCString()}` )}`, }, exposes: { @@ -156,6 +161,7 @@ const config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/web/ASC.Web.Login/package.json b/web/ASC.Web.Login/package.json index 69079d3482..185acfe4f9 100644 --- a/web/ASC.Web.Login/package.json +++ b/web/ASC.Web.Login/package.json @@ -24,6 +24,7 @@ "compression-webpack-plugin": "^7.1.2", "copy-webpack-plugin": "^7.0.0", "css-loader": "^3.6.0", + "external-remotes-plugin": "^1.0.0", "file-loader": "^6.2.0", "html-webpack-plugin": "4.5.0", "json-loader": "^0.5.7", diff --git a/web/ASC.Web.Login/webpack.config.js b/web/ASC.Web.Login/webpack.config.js index 40eea81367..553fe53578 100644 --- a/web/ASC.Web.Login/webpack.config.js +++ b/web/ASC.Web.Login/webpack.config.js @@ -3,8 +3,10 @@ const CopyPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack").container .ModuleFederationPlugin; +const ExternalTemplateRemotesPlugin = require("external-remotes-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const combineUrl = require("@appserver/common/utils/combineUrl"); +const getUTCString = require("@appserver/common/utils/getUTCString"); const AppServerConfig = require("@appserver/common/constants/AppServerConfig"); const { proxyURL } = AppServerConfig; @@ -133,9 +135,12 @@ var config = { new CleanWebpackPlugin(), new ModuleFederationPlugin({ name: "login", - filename: "remoteEntry.js", + filename: `remoteEntry.js?__hash=${getUTCString()}`, remotes: { - studio: `studio@${combineUrl(proxyURL, "/remoteEntry.js")}`, + studio: `studio@${combineUrl( + proxyURL, + `/remoteEntry.js?__hash=${getUTCString()}` + )}`, }, exposes: { "./app": "./src/Login.jsx", @@ -152,6 +157,7 @@ var config = { }, }, }), + new ExternalTemplateRemotesPlugin(), new HtmlWebpackPlugin({ template: "./public/index.html", publicPath: homepage, diff --git a/yarn.lock b/yarn.lock index 52c2b6eee3..594819d5b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1555,17 +1555,17 @@ unique-filename "^1.1.1" which "^1.3.1" -"@firebase/analytics-types@0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" - integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA== +"@firebase/analytics-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.5.0.tgz#cfa1dc34034fc478eca360f5faa4b4d0466892ce" + integrity sha512-VTV5Xtq5gVabbL/4n6pBtMJWcQBgOUDE2XbEHl8EOuwRaU9weyGUS7ofbisDkpl1RlFU1aewnc33pbLcYbi0iQ== -"@firebase/analytics@0.6.14": - version "0.6.14" - resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.14.tgz#692f88ceb4a12f51f51e4f7549684266482219f5" - integrity sha512-u7e9MreZOuv6VHhJvfp2UzNvNXac5QL2ofNhcQmwxUrMyHX80LUJrTLUCoaCpQvv3HJHX8WVj897a9LoB4OO1g== +"@firebase/analytics@0.6.15": + version "0.6.15" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.15.tgz#9a4957ea9bc95023fde1393249e6f24d9487eb3d" + integrity sha512-/x7AY7t5tEgfNuh01cZSgno+5AzF7iA0tvUOiv28JcvBOqmwBRcQb2KlatSFvXwqOL4Sk8G8duKTwlxl8R0m6A== dependencies: - "@firebase/analytics-types" "0.4.0" + "@firebase/analytics-types" "0.5.0" "@firebase/component" "0.5.4" "@firebase/installations" "0.4.30" "@firebase/logger" "0.2.6" @@ -1644,10 +1644,10 @@ dependencies: "@firebase/app-types" "0.6.2" -"@firebase/database@0.10.7": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.10.7.tgz#6241b573741ccb45b71d03226c0bfef6d2dbafb8" - integrity sha512-7BFj8LFhGL+TmLiPOffOVfkrO2wm44mGcT0jqrkTkt1KydapmjABFJBRvONvlLij5LoWrJK1cSuE8wYDQrDq2Q== +"@firebase/database@0.10.8": + version "0.10.8" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.10.8.tgz#819713c87aab5834dbd8856f0ad19741f7abfdb6" + integrity sha512-LCjQ6ELOm9TrENV0FuH3grkLTT0gPjBQC7K4dK2ggw39hSzmw09/WKVCmz0mCZtDDfxCiv+5Q6Md/w3zz6awEw== dependencies: "@firebase/auth-interop-types" "0.1.6" "@firebase/component" "0.5.4" @@ -1662,10 +1662,10 @@ resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.3.0.tgz#baf5c9470ba8be96bf0d76b83b413f03104cf565" integrity sha512-QTW7NP7nDL0pgT/X53lyj+mIMh4nRQBBTBlRNQBt7eSyeqBf3ag3bxdQhCg358+5KbjYTC2/O6QtX9DlJZmh1A== -"@firebase/firestore@2.3.8": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.3.8.tgz#fa747668cc20447d491fb92bc309fc3aff2fb6fc" - integrity sha512-76uA4czK+JM7rNbJXWrzA2gZQMGopQOvkQ7EffBfe9d921gvZ+W6naXaih+jYZn6BwuE7no9fx3RdZDszG5u+g== +"@firebase/firestore@2.3.9": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.3.9.tgz#866b635d9b1581031d9cfec25f5bdc1503a98041" + integrity sha512-DUYLSHdCY6YeTFrlgy6cbtlIvxZvLtEemTOupp52/1sSoF9/u46CCxvfyDyIFxvq4QCreEykjgc1p+Difb8uvQ== dependencies: "@firebase/component" "0.5.4" "@firebase/firestore-types" "2.3.0" @@ -1779,10 +1779,10 @@ resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.4.1.tgz#da6582ae217e3db485c90075dc71100ca5064cc6" integrity sha512-IM4cRzAnQ6QZoaxVZ5MatBzqXVcp47hOlE28jd9xXw1M9V7gfjhmW0PALGFQx58tPVmuUwIKyoEbHZjV4qRJwQ== -"@firebase/storage@0.5.6": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.5.6.tgz#5bb41124ca8d3d639af5bd0e5918eb912adec68c" - integrity sha512-T18/BvLTuuFaNSDxpojr7T0g07aO+q+hJjk03HFwQbifJxyxdsYZIwKu1Bdo+t48Qyh+l2tOjN4TiidIydUN2w== +"@firebase/storage@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.6.0.tgz#0b4e42119f252c6c8083d19de32da3f312b26030" + integrity sha512-JUfPt6SEQxDdkwzcGuhv9+sRdlvSAY2IiFR5cf1sYfzGJDxKUNldsmUy3llTY4HxKiMPC7y2rG78Q2xhOWeUDA== dependencies: "@firebase/component" "0.5.4" "@firebase/storage-types" "0.4.1" @@ -2887,10 +2887,10 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-9.0.0.tgz#05d33f999326785445c915d25167d68bd5eddb24" - integrity sha512-GSpv5VUFqarOXZl6uWPsDnjChkKCxnaMALmQhzvCWGiMxONQxX7ZwlomCMS+wB1KqxLPCA5n6gYt016oEMkHmQ== +"@octokit/openapi-types@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-9.1.0.tgz#7f73adbde8ba2d2512de90ea8a5da68b25d65d0a" + integrity sha512-XBP03pG4XuTU+VgeJM1ozRdmZJerMG4tk6wA+raFKycC4qV9jtD2UQroAg9bAcmI3Q0zWvifeDGtPqsFjMzkLg== "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" @@ -2977,11 +2977,11 @@ "@types/node" ">= 8" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.19.1.tgz#6ea5f759d8d37e892e59c0a65f10892789b84a25" - integrity sha512-hMI2EokQzMG8ABWcnvcrabqQFuFHqUdN0HUOG4DPTaOtnf/jqhzhK1SHOGu5vDlI/x+hWJ60e28VxB7QhOP0CQ== + version "6.21.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.21.0.tgz#723d0296d35296d6ec91247e770f24e6cd51d4ee" + integrity sha512-VPSxn9uhCoOUMpxCsOAQhf8DgIx+uzFjZRYDiZS5+TvrKaEwBrWkjr/5NmUVvPbW6xdPC2n3yL3XCnoxa4rxvg== dependencies: - "@octokit/openapi-types" "^9.0.0" + "@octokit/openapi-types" "^9.1.0" "@pmmmwh/react-refresh-webpack-plugin@^0.4.3": version "0.4.3" @@ -3351,16 +3351,16 @@ regenerator-runtime "^0.13.7" "@storybook/addons@^6.3.0": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.3.4.tgz#016c5c3e36c78a320eb8b022cf7fe556d81577c2" - integrity sha512-rf8K8X3JrB43gq5nw5SYgfucQkFg2QgUMWdByf7dQ4MyIl5zet+2MYiSXJ9lfbhGKJZ8orc81rmMtiocW4oBjg== + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.3.5.tgz#af7fec11cd780d64d0927840748d18e4df43e5d7" + integrity sha512-7IKTTzISRZdmdZrV/+CmcOfH3O1y/vWn+apkooWLwFhFkEKJXdmAzJ3A1uRmze4mF0ahdMTGVPm44DGlbGqv4g== dependencies: - "@storybook/api" "6.3.4" - "@storybook/channels" "6.3.4" - "@storybook/client-logger" "6.3.4" - "@storybook/core-events" "6.3.4" - "@storybook/router" "6.3.4" - "@storybook/theming" "6.3.4" + "@storybook/api" "6.3.5" + "@storybook/channels" "6.3.5" + "@storybook/client-logger" "6.3.5" + "@storybook/core-events" "6.3.5" + "@storybook/router" "6.3.5" + "@storybook/theming" "6.3.5" core-js "^3.8.2" global "^4.4.0" regenerator-runtime "^0.13.7" @@ -3417,19 +3417,19 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/api@6.3.4", "@storybook/api@^6.3.0": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.3.4.tgz#25b8b842104693000b018b3f64986e95fa032b45" - integrity sha512-12q6dvSR4AtyuZbKAy3Xt+ZHzZ4ePPRV1q20xtgYBoiFEgB9vbh4XKEeeZD0yIeTamQ2x1Hn87R79Rs1GIdKRQ== +"@storybook/api@6.3.5", "@storybook/api@^6.3.0": + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.3.5.tgz#3edaf32029fba018917ba25a307f471ddd165cc0" + integrity sha512-H5DfvreRbiN7O+VBCbHraM+xNvdzs60ehC7P2jGRAkbzurPjQAmVCMKkPVKzOF9JA5cGOyv/ctkDn/9PFfEl9Q== dependencies: "@reach/router" "^1.3.4" - "@storybook/channels" "6.3.4" - "@storybook/client-logger" "6.3.4" - "@storybook/core-events" "6.3.4" + "@storybook/channels" "6.3.5" + "@storybook/client-logger" "6.3.5" + "@storybook/core-events" "6.3.5" "@storybook/csf" "0.0.1" - "@storybook/router" "6.3.4" + "@storybook/router" "6.3.5" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.3.4" + "@storybook/theming" "6.3.5" "@types/reach__router" "^1.3.7" core-js "^3.8.2" fast-deep-equal "^3.1.3" @@ -3548,10 +3548,10 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channels@6.3.4": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.3.4.tgz#425b31a67e42ac66ccb03465e4ba2e2ef9c8344b" - integrity sha512-zdZzBbIu9JHEe+uw8FqKsNUiFY+iqI9QdHH/pM3DTTQpBN/JM1Xwfo3CkqA8c5PkhSGqpW0YjXoPash4lawr1Q== +"@storybook/channels@6.3.5": + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.3.5.tgz#8c660057b2cc48859dbda269e9bc4f71be260a46" + integrity sha512-kYR822+NLSokY0JkOBSDJCC8woXx9T4m6IaHS3/R4BhurSS80Jt09YWc8nQPKTAkkTrSSnzKiS1D/yVGsGbMjg== dependencies: core-js "^3.8.2" ts-dedent "^2.0.0" @@ -3596,10 +3596,10 @@ core-js "^3.8.2" global "^4.4.0" -"@storybook/client-logger@6.3.4": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.3.4.tgz#c7ee70463c48bb3af704165d5456351ebb667fc2" - integrity sha512-Gu4M5bBHHQznsdoj8uzYymeojwWq+CRNsUUH41BQIND/RJYSX1IYGIj0yNBP449nv2pjHcTGlN8NJDd+PcELCQ== +"@storybook/client-logger@6.3.5": + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.3.5.tgz#428b69c6433433372cc8265f285da9707fed63ab" + integrity sha512-vPD8MYf/847lsYGhq9eFmcAi+fQc2p6fue9McEreHviaT3S3Sk5/u8L2f8D8sdpym0yPJrHBmla+fK45MnxQLg== dependencies: core-js "^3.8.2" global "^4.4.0" @@ -3662,14 +3662,14 @@ util-deprecate "^1.0.2" "@storybook/components@^6.3.0": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.3.4.tgz#c872ec267edf315eaada505be8595c70eb6db09b" - integrity sha512-0hBKTkkQbW+daaA6nRedkviPr2bEzy1kwq0H5eaLKI1zYeXN3U5Z8fVhO137PPqH5LmLietrmTPkqiljUBk9ug== + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.3.5.tgz#7e2f2d15c3552de6507727bfa4a13a20facd81e5" + integrity sha512-EYyUhxuuted3fmPC8055cxG4kMf8tp/sjI6l2wAQ5myRZ3zBpV0mjOxxgOeiDphtBnyDKmOF+4x8EkSUJmu/5w== dependencies: "@popperjs/core" "^2.6.0" - "@storybook/client-logger" "6.3.4" + "@storybook/client-logger" "6.3.5" "@storybook/csf" "0.0.1" - "@storybook/theming" "6.3.4" + "@storybook/theming" "6.3.5" "@types/color-convert" "^2.0.0" "@types/overlayscrollbars" "^1.12.0" "@types/react-syntax-highlighter" "11.0.5" @@ -3782,10 +3782,10 @@ dependencies: core-js "^3.8.2" -"@storybook/core-events@6.3.4", "@storybook/core-events@^6.3.0": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.3.4.tgz#f841b8659a8729d334acd9a6dcfc470c88a2be8f" - integrity sha512-6qI5bU5VcAoRfxkvpdRqO16eYrX5M0P2E3TakqUUDcgDo5Rfcwd1wTTcwiXslMIh7oiVGiisA+msKTlfzyKf9Q== +"@storybook/core-events@6.3.5", "@storybook/core-events@^6.3.0": + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.3.5.tgz#40d51b39e086192dc0af11e22da011e5483ee400" + integrity sha512-1RUaOwD1STqf1EG727fLuy18dS67Nkdf/8pIGGATxAohfwHkHOhOI9tOP+GPx+aE7UioDmVWvwbUxRQ1b4YitA== dependencies: core-js "^3.8.2" @@ -3997,13 +3997,13 @@ qs "^6.10.0" ts-dedent "^2.0.0" -"@storybook/router@6.3.4": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.3.4.tgz#f38ec8064a9d1811a68558390727c30220fe7d72" - integrity sha512-cNG2bT0BBfqJyaW6xKUnEB/XXSdMkYeI9ShwJ2gh/2Bnidm7eZ/RKUOZ4q5equMm+SxxyZgpBulqnFN+TqPbOA== +"@storybook/router@6.3.5": + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.3.5.tgz#ab24a8e1416323413ee434f887b872a515be5da1" + integrity sha512-cLGYdmKhb3awE/Un4bNgTXY5tpPppYmoxuFNrOrWSgS3z4eed1W1YcMbL0EWbCTubz9zDAInD2gd0nhOS+HYeQ== dependencies: "@reach/router" "^1.3.4" - "@storybook/client-logger" "6.3.4" + "@storybook/client-logger" "6.3.5" "@types/reach__router" "^1.3.7" core-js "^3.8.2" fast-deep-equal "^3.1.3" @@ -4073,15 +4073,15 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/theming@6.3.4": - version "6.3.4" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.3.4.tgz#69d3f912c74a7b6ba78c1c95fac3315356468bdd" - integrity sha512-L0lJcwUi7mse+U7EBAv5NVt81mH1MtUzk9paik8hMAc68vDtR/X0Cq4+zPsgykCROOTtEGrQ/JUUrpcEqeprTQ== +"@storybook/theming@6.3.5": + version "6.3.5" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.3.5.tgz#673fa63e7723b651d0a400bf916169bfd3da8c81" + integrity sha512-TvgzzUvjJK1jJzqCiB4FUjvK9JZjPUsgYgAdbDuZX//N9zwbjR1cSR8eJWfuCDk0ECvQ6V+vnwnGQ5XmFqSJ1Q== dependencies: "@emotion/core" "^10.1.1" "@emotion/is-prop-valid" "^0.8.6" "@emotion/styled" "^10.0.27" - "@storybook/client-logger" "6.3.4" + "@storybook/client-logger" "6.3.5" core-js "^3.8.2" deep-object-diff "^1.1.0" emotion-theming "^10.0.27" @@ -4509,17 +4509,17 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node-fetch@^2.5.7": - version "2.5.11" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.11.tgz#ce22a2e65fc8999f4dbdb7ddbbcf187d755169e4" - integrity sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ== + version "2.5.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== dependencies: "@types/node" "*" form-data "^3.0.0" "@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.0.tgz#2c219eaa3b8d1e4d04f4dd6e40bc68c7467d5272" - integrity sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg== + version "16.4.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.1.tgz#9fad171a5b701613ee8a6f4ece3c88b1034b1b03" + integrity sha512-UW7cbLqf/Wu5XH2RKKY1cHwUNLicIDRLMraYKz+HHAerJ0ZffUEk+fMnd8qU2JaS6cAy0r8tsaf7yqHASf/Y0Q== "@types/node@^14.0.10": version "14.17.5" @@ -7687,9 +7687,9 @@ data-urls@^1.0.0: whatwg-url "^7.0.0" date-fns@^2.0.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.22.1.tgz#1e5af959831ebb1d82992bf67b765052d8f0efc4" - integrity sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg== + version "2.23.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9" + integrity sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA== dateformat@^3.0.0: version "3.0.3" @@ -8230,9 +8230,9 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.723: - version "1.3.782" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.782.tgz#522740fe6b4b5255ca754c68d9c406a17b0998e2" - integrity sha512-6AI2se1NqWA1SBf/tlD6tQD/6ZOt+yAhqmrTlh4XZw4/g0Mt3p6JhTQPZxRPxPZiOg0o7ss1EBP/CpYejfnoIA== + version "1.3.785" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.785.tgz#79f546c69a6be4f30913aaace361bc746f26df48" + integrity sha512-WmCgAeURsMFiyoJ646eUaJQ7GNfvMRLXo+GamUyKVNEM4MqTAsXyC0f38JEB4N3BtbD0tlAKozGP5E2T9K3YGg== element-resize-detector@^1.2.2: version "1.2.3" @@ -8923,6 +8923,13 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +external-remotes-plugin@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/external-remotes-plugin/-/external-remotes-plugin-1.0.0.tgz#2ad8ecad6cba28f6e0fd7bccf8536aeda1297b20" + integrity sha512-19cfGfzmPMXkRNpyqOHgndNB07vjk1G1V7IuyixBw8Z1QTc/IOhINy9TbWzDRPTmj64e3STTI1MJE0gI58p7YA== + dependencies: + webpack-sources "^2.2.0" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -9204,24 +9211,24 @@ find-up@^5.0.0: path-exists "^4.0.0" firebase@^8.6.7: - version "8.7.1" - resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.7.1.tgz#b22ce063c4df16d849c0160662e6fcf6bc396f32" - integrity sha512-OM+pUxIAqd5+XQMGux8InhhWmHDqlzQij67ljomMNblrxGiFOh8bMe+DGU9r8dh7CDaBYNtT6L0KR859BqhkDQ== + version "8.8.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.8.0.tgz#938762c357b64d17c7f63a36caa391d6365b4e22" + integrity sha512-c4ckTSpmVa7delz1HEEqQJfZYwhEWgXgQgVFcPpjUAc0hvMynS8W37SyufxfBcIki2iPfduWV/RrDhM49hKTbw== dependencies: - "@firebase/analytics" "0.6.14" + "@firebase/analytics" "0.6.15" "@firebase/app" "0.6.28" "@firebase/app-check" "0.2.0" "@firebase/app-types" "0.6.2" "@firebase/auth" "0.16.8" - "@firebase/database" "0.10.7" - "@firebase/firestore" "2.3.8" + "@firebase/database" "0.10.8" + "@firebase/firestore" "2.3.9" "@firebase/functions" "0.6.13" "@firebase/installations" "0.4.30" "@firebase/messaging" "0.7.14" "@firebase/performance" "0.4.16" "@firebase/polyfill" "0.3.36" "@firebase/remote-config" "0.1.41" - "@firebase/storage" "0.5.6" + "@firebase/storage" "0.6.0" "@firebase/util" "1.1.0" flat-cache@^2.0.1: @@ -10144,6 +10151,11 @@ highlight.js@~9.13.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== +highlight.js@~9.18.2: + version "9.18.5" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== + history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -10423,9 +10435,9 @@ humanize-ms@^1.2.1: ms "^2.0.0" i18next-http-backend@^1.1.0, i18next-http-backend@^1.1.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-1.2.6.tgz#80b12e8b207814aebb3b8a74c4487dd156973bee" - integrity sha512-NeNNRofj+rR6Cw+/Elf8bCVaCiqWg2Y6F+CrmDvHiPzAW2Dtxxlk8O0na2et/rr1n3ST6rJr4nMXH/QOFuhaeA== + version "1.2.7" + resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-1.2.7.tgz#a5fd22014e83526f9e5c070cceb63fe988b25afd" + integrity sha512-L/yQIX2SxZxIVlkNPd82hIgCr66zqbp068D6+LZrZdrFqGOdyWsslclxKu9t+RfWl5nP9MfX1y7gKVC8TNOtUw== dependencies: cross-fetch "3.1.4" @@ -15131,12 +15143,12 @@ react-svg@^12.0.0: prop-types "^15.7.2" react-syntax-highlighter@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz#4e3f376e752b20d2f54e4c55652fd663149e4029" - integrity sha512-kqmpM2OH5OodInbEADKARwccwSQWBfZi0970l5Jhp4h39q9Q65C4frNcnd6uHE5pR00W8pOWj9HDRntj2G4Rww== + version "11.0.3" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-11.0.3.tgz#de639b97b781c3f7056d1ee7b6573ea8ab741460" + integrity sha512-0v0ET2qn9oAam4K/Te9Q/2jtS4R2d6wUFqgk5VcxrCBm+4MB5BE+oQf2CA0RanUHbYaYFuagt/AugICU87ufxQ== dependencies: "@babel/runtime" "^7.3.1" - highlight.js "~9.13.0" + highlight.js "~9.18.2" lowlight "~1.11.0" prismjs "^1.8.4" refractor "^2.4.1" @@ -15514,9 +15526,9 @@ regenerator-runtime@^0.11.0: integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: version "0.14.5" @@ -17717,9 +17729,9 @@ ua-parser-js@^0.7.24: integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== uglify-js@^3.1.4: - version "3.13.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.10.tgz#a6bd0d28d38f592c3adb6b180ea6e07e1e540a8d" - integrity sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg== + version "3.14.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.0.tgz#2d723a0afee81e0d08db9354a9c277006e942386" + integrity sha512-R/tiGB1ZXp2BC+TkRGLwj8xUZgdfT2f4UZEgX6aVjJ5uttPrr4fYmwTWDGqVnBCLbOXRMY6nr/BTbwCtVfps0g== uid-number@0.0.6: version "0.0.6" @@ -18377,7 +18389,7 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^2.1.1: +webpack-sources@^2.1.1, webpack-sources@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==