Merge branch 'release/1.0.0' of github.com:ONLYOFFICE/AppServer into release/1.0.0

# Conflicts:
#	packages/asc-web-common/utils/sw-helper.js
This commit is contained in:
Viktor Fomin 2021-07-21 07:20:51 +03:00
commit f7ce0e210b
96 changed files with 758 additions and 508 deletions

View File

@ -10,9 +10,17 @@ package_services="";
RES_APP_INSTALLED="is already installed";
RES_APP_CHECK_PORTS="uses ports"
RES_CHECK_PORTS="please, make sure that the ports are free.";
RES_INSTALL_SUCCESS="Thank you for installing ONLYOFFICE ${product}.";
RES_INSTALL_SUCCESS="Thank you for installing ONLYOFFICE ${product^^}.";
RES_QUESTIONS="In case you have any questions contact us via http://support.onlyoffice.com or visit our forum at http://dev.onlyoffice.org"
res_unsupported_version () {
RES_CHOICE="Please, enter Y or N"
RES_CHOICE_INSTALLATION="Continue installation [Y/N]? "
RES_UNSPPORTED_VERSION="You have an unsupported version of $DIST installed"
RES_SELECT_INSTALLATION="Select 'N' to cancel the ONLYOFFICE installation (recommended). Select 'Y' to continue installing ONLYOFFICE"
RES_ERROR_REMINDER="Please note, that if you continue with the installation, there may be errors"
}
while [ "$1" != "" ]; do
case $1 in

View File

@ -15,6 +15,8 @@ ${package_manager} clean all
${package_manager} -y install yum-utils
DIST=$(rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release);
DIST=$(echo $DIST | sed -n '/-.*/s///p');
REV=$(cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//);
REV_PARTS=(${REV//\./ });
REV=${REV_PARTS[0]};
@ -23,6 +25,33 @@ if ! [[ "$REV" =~ ^[0-9]+$ ]]; then
REV=7;
fi
read_unsupported_installation () {
read -p "$RES_CHOICE_INSTALLATION " CHOICE_INSTALLATION
case "$CHOICE_INSTALLATION" in
y|Y ) yum -y install $DIST*-release
;;
n|N ) exit 0;
;;
* ) echo $RES_CHOICE;
read_unsupported_installation
;;
esac
}
{ yum check-update $DIST*-release; exitCode=$?; } || true #Checking for distribution update
UPDATE_AVAILABLE_CODE=100
if [[ $exitCode -eq $UPDATE_AVAILABLE_CODE ]]; then
res_unsupported_version
echo $RES_UNSPPORTED_VERSION
echo $RES_SELECT_INSTALLATION
echo $RES_ERROR_REMINDER
echo $RES_QUESTIONS
read_unsupported_installation
fi
# add epel repo
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-$REV.noarch.rpm || true
rpm -ivh https://rpms.remirepo.net/enterprise/remi-release-$REV.rpm || true
@ -140,7 +169,7 @@ ${package_manager} -y install epel-release \
make \
yarn \
dotnet-sdk-5.0 \
elasticsearch-7.8.1 --enablerepo=elasticsearch \
elasticsearch-7.13.1 --enablerepo=elasticsearch \
mysql-server \
nginx \
supervisor \

View File

@ -75,18 +75,18 @@ reassign_values (){
EXEC_FILE="ASC.ApiSystem.dll"
;;
urlshortener )
SERVICE_PORT="9999"
WORK_DIR="${BASE_DIR}/services/ASC.UrlShortener/"
SERVICE_PORT="9998"
WORK_DIR="${BASE_DIR}/services/ASC.UrlShortener.Svc/"
EXEC_FILE="ASC.UrlShortener.Svc.dll"
;;
thumbnails )
SERVICE_PORT="9800"
WORK_DIR="${BASE_DIR}/services/ASC.Thumbnails/"
SERVICE_PORT="9799"
WORK_DIR="${BASE_DIR}/services/ASC.Thumbnails.Svc/"
EXEC_FILE="ASC.Thumbnails.Svc.dll"
;;
socket )
SERVICE_PORT="9899"
WORK_DIR="${BASE_DIR}/services/ASC.Socket.IO/"
SERVICE_PORT="9898"
WORK_DIR="${BASE_DIR}/services/ASC.Socket.IO.Svc/"
EXEC_FILE="ASC.Socket.IO.Svc.dll"
;;
studio-notify )

View File

@ -13,7 +13,7 @@ Packager: Ascensio System SIA <support@onlyoffice.com>
ExclusiveArch: x86_64
AutoReq: no
AutoProv: no
License: GPLv3
License: AGPLv3
Source0: https://github.com/ONLYOFFICE/%{product}/archive/%GIT_BRANCH.tar.gz
BuildRequires: nodejs >= 12.0
BuildRequires: yarn

View File

@ -166,18 +166,21 @@
%files urlshortener
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.UrlShortener/
%{buildpath}/services/ASC.UrlShortener.Svc/
%{_sysconfdir}/systemd/system/%{product}-urlshortener.service
%dir %{buildpath}/services/
%files thumbnails
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.Thumbnails/
%{buildpath}/services/ASC.Thumbnails.Svc/
%{_sysconfdir}/systemd/system/%{product}-thumbnails.service
%dir %{buildpath}/services/
%files socket
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.Socket.IO/
%{buildpath}/services/ASC.Socket.IO.Svc/
%{buildpath}/products/ASC.Files/server/
%{buildpath}/products/ASC.People/server/
%{buildpath}/products/ASC.CRM/server/

View File

@ -13,7 +13,7 @@ mkdir -p "%{buildroot}%{buildpath}/products/ASC.CRM/client/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.CRM/server/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/client/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/editor/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/server/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/server/DocStore/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/service/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Mail/client/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Mail/server/"
@ -23,6 +23,7 @@ mkdir -p "%{buildroot}%{buildpath}/products/ASC.Projects/client/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Projects/server/"
mkdir -p "%{buildroot}%{buildpath}/public/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Socket.IO/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Socket.IO.Svc/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ApiSystem/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Backup/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Notify/"
@ -30,8 +31,10 @@ mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Storage.Encryption/service"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Storage.Migration/service"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Studio.Notify/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.TelegramService/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Thumbnails/client/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.UrlShortener/client/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Thumbnails/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.UrlShortener/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.UrlShortener.Svc/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Thumbnails.Svc/"
mkdir -p "%{buildroot}%{buildpath}/sql/"
mkdir -p "%{buildroot}%{buildpath}/studio/api/"
mkdir -p "%{buildroot}%{buildpath}/studio/client/"
@ -48,15 +51,15 @@ cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.ApiSystem/service/* "%{bu
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Data.Backup/service/* "%{buildroot}%{buildpath}/services/ASC.Data.Backup/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Notify/service/* "%{buildroot}%{buildpath}/services/ASC.Notify/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Socket.IO/service/* "%{buildroot}%{buildpath}/services/ASC.Socket.IO/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Socket.IO.Svc/service/* "%{buildroot}%{buildpath}/services/ASC.Socket.IO/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Socket.IO.Svc/service/* "%{buildroot}%{buildpath}/services/ASC.Socket.IO.Svc/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Data.Storage.Encryption/service/* "%{buildroot}%{buildpath}/services/ASC.Data.Storage.Encryption/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Data.Storage.Migration/service/* "%{buildroot}%{buildpath}/services/ASC.Data.Storage.Migration/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Studio.Notify/service/* "%{buildroot}%{buildpath}/services/ASC.Studio.Notify/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.TelegramService/service/* "%{buildroot}%{buildpath}/services/ASC.TelegramService/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Thumbnails/service/* "%{buildroot}%{buildpath}/services/ASC.Thumbnails/client/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Thumbnails.Svc/service/* "%{buildroot}%{buildpath}/services/ASC.Thumbnails/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.UrlShortener/service/* "%{buildroot}%{buildpath}/services/ASC.UrlShortener/client/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.UrlShortener.Svc/service/* "%{buildroot}%{buildpath}/services/ASC.UrlShortener/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Thumbnails/service/* "%{buildroot}%{buildpath}/services/ASC.Thumbnails/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Thumbnails.Svc/service/* "%{buildroot}%{buildpath}/services/ASC.Thumbnails.Svc/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.UrlShortener/service/* "%{buildroot}%{buildpath}/services/ASC.UrlShortener/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.UrlShortener.Svc/service/* "%{buildroot}%{buildpath}/services/ASC.UrlShortener.Svc/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Web.Api/service/* "%{buildroot}%{buildpath}/studio/api/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Web.Studio/service/* "%{buildroot}%{buildpath}/studio/server/"
cp -rf %{_builddir}/%{sourcename}/build/install/common/systemd/modules/* "%{buildroot}%{_sysconfdir}/systemd/system/"
@ -67,6 +70,7 @@ cp -rf %{_builddir}/%{sourcename}/config/nginx/includes/onlyoffice*.conf "%{buil
cp -rf %{_builddir}/%{sourcename}/config/nginx/onlyoffice*.conf "%{buildroot}%{_sysconfdir}/nginx/conf.d/"
cp -rf %{_builddir}/%{sourcename}/products/ASC.CRM/Client/dist/* "%{buildroot}%{buildpath}/products/ASC.CRM/client/"
cp -rf %{_builddir}/%{sourcename}/products/ASC.Files/Client/dist/* "%{buildroot}%{buildpath}/products/ASC.Files/client/"
cp -rf %{_builddir}/%{sourcename}/products/ASC.Files/Server/DocStore/* "%{buildroot}%{buildpath}/products/ASC.Files/server/DocStore/"
cp -rf %{_builddir}/%{sourcename}/products/ASC.People/Client/dist/* "%{buildroot}%{buildpath}/products/ASC.People/client/"
cp -rf %{_builddir}/%{sourcename}/products/ASC.Projects/Client/dist/* "%{buildroot}%{buildpath}/products/ASC.Projects/client/"
cp -rf %{_builddir}/%{sourcename}/products/ASC.Calendar/Client/dist/* "%{buildroot}%{buildpath}/products/ASC.Calendar/client/"

View File

@ -31,7 +31,6 @@ ELK_PORT="9200"
JSON="json -I -f"
JSON_USERCONF="$JSON $USER_CONF -e"
JSON_DSCONF="$JSON $DS_CONF -e"
[ $(id -u) -ne 0 ] && { echo "Root privileges required"; exit 1; }
@ -129,7 +128,7 @@ while [ "$1" != "" ]; do
echo " -zkp, --zookeeperport zookeeper port (default 2181)"
echo " -esh, --elastichost elasticsearch ip"
echo " -esp, --elasticport elasticsearch port (default 9200)"
echo " -e, --environment environment (default 'production')"
echo " -e, --environment environment (default 'production')"
echo " -?, -h, --help this help"
echo
exit 0
@ -167,8 +166,8 @@ install_json() {
set_core_machinekey
$JSON_USERCONF "this.core={'base-domain': \"$APP_HOST\", 'machinekey': \"$CORE_MACHINEKEY\" }" \
-e "this.urlshortener={ 'path': 'client/index.js' }" -e "this.thumb={ 'path': 'client/' }" \
-e "this.socket={ 'path': '../ASC.Socket.IO' }" >/dev/null 2>&1
-e "this.urlshortener={ 'path': '../ASC.UrlShortener/index.js' }" -e "this.thumb={ 'path': '../ASC.Thumbnails/' }" \
-e "this.socket={ 'path': '../ASC.Socket.IO/' }" >/dev/null 2>&1
$JSON $APP_DIR/appsettings.json -e "this.core.products.subfolder='server'" >/dev/null 2>&1
$JSON $APP_DIR/appsettings.services.json -e "this.core={ 'products': { 'folder': '../../products', 'subfolder': 'server'} }" >/dev/null 2>&1
@ -178,23 +177,21 @@ install_json() {
restart_services() {
echo -n "Restarting services... "
sed -i "s/ENVIRONMENT=.*/ENVIRONMENT=$ENVIRONMENT/" $SYSTEMD_DIR/${PRODUCT}*.service >/dev/null 2>&1
systemctl daemon-reload
for SVC in nginx mysqld ${PRODUCT}-api ${PRODUCT}-api-system ${PRODUCT}-urlshortener ${PRODUCT}-thumbnails \
${PRODUCT}-socket ${PRODUCT}-studio-notify ${PRODUCT}-notify ${PRODUCT}-people-server ${PRODUCT}-files \
${PRODUCT}-files-services ${PRODUCT}-studio ${PRODUCT}-backup ${PRODUCT}-storage-encryption \
${PRODUCT}-storage-migration ${PRODUCT}-projects-server ${PRODUCT}-telegram-service ${PRODUCT}-crm \
${PRODUCT}-calendar ${PRODUCT}-mail elasticsearch kafka zookeeper
do
sed -i "s/ENVIRONMENT=.*/ENVIRONMENT=$ENVIRONMENT/" $SYSTEMD_DIR/$SVC.service >/dev/null 2>&1
if systemctl is-active $SVC | grep -q "active"; then
systemctl restart $SVC.service >/dev/null 2>&1
else
systemctl enable $SVC.service >/dev/null 2>&1
systemctl start $SVC.service >/dev/null 2>&1
fi
if systemctl is-active $SVC | grep -v "active" >/dev/null; then
echo -e "\033[31m $SVC not started \033[0m"
fi
done
echo "OK"
}
@ -418,6 +415,7 @@ setup_nginx(){
setup_docs() {
echo -n "Configuring Docs... "
local DS_CONF="/etc/onlyoffice/documentserver/local.json"
local JSON_DSCONF="$JSON $DS_CONF -e"
#Changing the Docs port in nginx conf
sed -i "s/0.0.0.0:.*;/0.0.0.0:$DOCUMENT_SERVER_PORT;/" $NGINX_CONF/ds.conf
@ -504,7 +502,7 @@ setup_elasticsearch() {
echo -n "Configuring elasticsearch... "
#Save elasticsearch parameters in .json
$JSON_USERCONF "this.elastic={'Scheme': \"${ELK_SHEME}\",'Host': \"${ELK_HOST}\",'Port': \"${ELK_PORT}\" }" >/dev/null 2>&1
$JSON $APP_DIR/elastic.json -e "this.elastic={'Scheme': \"${ELK_SHEME}\",'Host': \"${ELK_HOST}\",'Port': \"${ELK_PORT}\",'Threads': \"1\" }" >/dev/null 2>&1
change_elasticsearch_config
@ -515,12 +513,14 @@ setup_kafka() {
local KAFKA_SERVICE=$(systemctl --type=service | grep 'kafka' | tr -d '●' | awk '{print $1;}')
if [ $KAFKA_SERVICE ]; then
if [ -n ${KAFKA_SERVICE} ]; then
echo -n "Configuring kafka... "
local KAFKA_DIR="$(cat $SYSTEMD_DIR/$KAFKA_SERVICE | grep ExecStop= | cut -c 10- | rev | cut -c 26- | rev)"
local KAFKA_CONF="${KAFKA_DIR}/config"
#Change kafka config
local KAFKA_CONF="$(cat $SYSTEMD_DIR/$KAFKA_SERVICE | grep ExecStop= | cut -c 10- | rev | cut -c 26- | rev)/config"
sed -i "s/clientPort=.*/clientPort=${ZOOKEEPER_PORT}/g" $KAFKA_CONF/zookeeper.properties
sed -i "s/zookeeper.connect=.*/zookeeper.connect=${ZOOKEEPER_HOST}:${ZOOKEEPER_PORT}/g" $KAFKA_CONF/server.properties
sed -i "s/bootstrap.servers=.*/bootstrap.servers=${KAFKA_HOST}:${KAFKA_PORT}/g" $KAFKA_CONF/consumer.properties
@ -532,6 +532,17 @@ setup_kafka() {
#Save kafka parameters in .json
$JSON_USERCONF "this.kafka={'BootstrapServers': \"${KAFKA_HOST}:${KAFKA_PORT}\"}" >/dev/null 2>&1
#Add topics for kafka
KAFKA_TOPICS=( ascchannelQuotaCacheItemAny
ascchannelTariffCacheItemRemove
ascchannelTenantCacheItemInsertOrUpdate
ascchannelTenantSettingRemove )
for i in "${KAFKA_TOPICS[@]}"
do
${KAFKA_DIR}/bin/kafka-topics.sh --create --zookeeper ${ZOOKEEPER_HOST}:${ZOOKEEPER_PORT} --topic $i --replication-factor 1 --partitions 3 >/dev/null 2>&1
done
echo "OK"
fi

View File

@ -8,7 +8,6 @@ using ASC.Api.Core.Middleware;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Mapping;
using Autofac;
@ -33,8 +32,7 @@ namespace ASC.Api.Core
public abstract class BaseStartup
{
public IConfiguration Configuration { get; }
public IHostEnvironment HostEnvironment { get; }
public virtual string[] LogParams { get; }
public IHostEnvironment HostEnvironment { get; }
public virtual JsonConverter[] Converters { get; }
public virtual bool ConfirmAddScheme { get; } = false;
protected DIHelper DIHelper { get; }
@ -83,7 +81,10 @@ namespace ASC.Api.Core
DIHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
DIHelper.RegisterProducts(Configuration, HostEnvironment.ContentRootPath);
if (LoadProducts)
{
DIHelper.RegisterProducts(Configuration, HostEnvironment.ContentRootPath);
}
var builder = services.AddMvcCore(config =>
{
@ -111,11 +112,6 @@ namespace ASC.Api.Core
if (ConfirmAddScheme)
{
authBuilder.AddScheme<AuthenticationSchemeOptions, ConfirmAuthHandler>("confirm", a => { });
}
if (LogParams != null)
{
LogNLogExtension.ConfigureLog(DIHelper, LogParams);
}
services.AddAutoMapper(Assembly.GetAssembly(typeof(MappingProfile)));

View File

@ -98,7 +98,9 @@ namespace ASC.Common.Logging
void FatalFormat(IFormatProvider provider, string format, params object[] args);
string LogDirectory { get; }
string Name { get; set; }
string Name { get; set; }
void Configure(string name);
}
public class Log : ILog
@ -108,7 +110,7 @@ namespace ASC.Common.Logging
XmlConfigurator.Configure(log4net.LogManager.GetRepository(Assembly.GetCallingAssembly()));
}
private readonly log4net.ILog loger;
private log4net.ILog loger;
public bool IsDebugEnabled { get; private set; }
@ -124,6 +126,11 @@ namespace ASC.Common.Logging
public Log(string name)
{
Configure(name);
}
public void Configure(string name)
{
loger = log4net.LogManager.GetLogger(Assembly.GetCallingAssembly(), name);
IsDebugEnabled = loger.IsDebugEnabled;
@ -131,8 +138,8 @@ namespace ASC.Common.Logging
IsWarnEnabled = loger.IsWarnEnabled;
IsErrorEnabled = loger.IsErrorEnabled;
IsFatalEnabled = loger.IsFatalEnabled;
IsTraceEnabled = loger.Logger.IsEnabledFor(Level.Trace);
}
IsTraceEnabled = loger.Logger.IsEnabledFor(Level.Trace);
}
public void Trace(object message)
{
@ -401,14 +408,21 @@ namespace ASC.Common.Logging
NLog.Targets.Target.Register<SelfCleaningTarget>("SelfCleaning");
}
public void Configure(LogNLog options)
{
public void Configure(LogNLog options)
{
options.Configure("ASC");
}
public void Configure(string name, LogNLog options)
{
Configure(options);
if (string.IsNullOrEmpty(name))
{
Configure(options);
}
else
{
options.Configure(name);
}
}
}
@ -443,7 +457,12 @@ namespace ASC.Common.Logging
public bool IsFatalEnabled { get; private set; }
public bool IsTraceEnabled { get; private set; }
public bool IsTraceEnabled { get; private set; }
public void Configure(string name)
{
Name = name;
}
public void Trace(object message)
{
@ -850,19 +869,23 @@ namespace ASC.Common.Logging
public void DebugWithProps(string message, KeyValuePair<string, object> prop1, KeyValuePair<string, object> prop2, KeyValuePair<string, object> prop3)
{
}
}
public void Configure(string name)
{
}
public string LogDirectory { get { return ""; } }
public string Name { get; set; }
}
[Singletone]
public class LogManager<T> : OptionsMonitor<T> where T : class, ILog, new()
{
public LogManager(IOptionsFactory<T> factory, IEnumerable<IOptionsChangeTokenSource<T>> sources, IOptionsMonitorCache<T> cache) : base(factory, sources, cache)
{
{
}
public override T Get(string name)
@ -881,21 +904,8 @@ namespace ASC.Common.Logging
public class LoggerExtension<T> where T : class, ILog, new()
{
public static void RegisterLog(DIHelper services)
{
const string baseName = "ASC";
var baseSqlName = $"{baseName}.SQL";
services.Configure<T>(r => r.Name = baseName);
services.Configure<T>(baseName, r => r.Name = baseName);
services.Configure<T>(baseSqlName, r => r.Name = baseSqlName);
services.TryAdd(typeof(IOptionsMonitor<ILog>), typeof(LogManager<T>));
}
public static void ConfigureLog(DIHelper services, params string[] additionalLoggers)
{
foreach (var l in additionalLoggers)
{
services.Configure<T>(l, r => r.Name = l);
}
services.TryAdd(typeof(IOptionsMonitor<ILog>), typeof(LogManager<T>));
}
}

View File

@ -40,10 +40,12 @@ namespace ASC.Core.Data
{
private Expression<Func<Subscription, SubscriptionRecord>> FromSubscriptionToSubscriptionRecord { get; set; }
private Expression<Func<DbSubscriptionMethod, SubscriptionMethod>> FromDbSubscriptionMethodToSubscriptionMethod { get; set; }
private UserDbContext UserDbContext { get; set; }
private Lazy<UserDbContext> LazyUserDbContext { get; }
private UserDbContext UserDbContext { get => LazyUserDbContext.Value; }
public DbSubscriptionService(DbContextManager<UserDbContext> dbContextManager)
{
UserDbContext = dbContextManager.Value;
LazyUserDbContext = new Lazy<UserDbContext>(() => dbContextManager.Value);
FromSubscriptionToSubscriptionRecord = r => new SubscriptionRecord
{

View File

@ -61,7 +61,7 @@ namespace ASC.Core.Common.EF
switch (Provider)
{
case Provider.MySql:
optionsBuilder.UseMySql(ConnectionStringSettings.ConnectionString, ServerVersion.AutoDetect(ConnectionStringSettings.ConnectionString), r=>
optionsBuilder.UseMySql(ConnectionStringSettings.ConnectionString, ServerVersion.Parse("8.0.25"), r=>
{
if (!string.IsNullOrEmpty(MigrateAssembly))
{

View File

@ -48,12 +48,13 @@ namespace ASC.Feed.Data
private AuthContext AuthContext { get; }
private TenantManager TenantManager { get; }
private TenantUtil TenantUtil { get; }
private FeedDbContext FeedDbContext { get; }
private Lazy<FeedDbContext> LazyFeedDbContext { get; }
private FeedDbContext FeedDbContext { get => LazyFeedDbContext.Value; }
public FeedAggregateDataProvider(AuthContext authContext, TenantManager tenantManager, TenantUtil tenantUtil, DbContextManager<FeedDbContext> dbContextManager)
: this(authContext, tenantManager, tenantUtil)
{
FeedDbContext = dbContextManager.Get(Constants.FeedDbId);
LazyFeedDbContext = new Lazy<FeedDbContext>(() => dbContextManager.Get(Constants.FeedDbId));
}
public FeedAggregateDataProvider(AuthContext authContext, TenantManager tenantManager, TenantUtil tenantUtil)

View File

@ -41,13 +41,14 @@ namespace ASC.Feed.Data
private AuthContext AuthContext { get; }
private TenantManager TenantManager { get; }
private FeedDbContext FeedDbContext { get; }
private Lazy<FeedDbContext> LazyFeedDbContext { get; }
private FeedDbContext FeedDbContext { get => LazyFeedDbContext.Value; }
public FeedReadedDataProvider(AuthContext authContext, TenantManager tenantManager, DbContextManager<FeedDbContext> dbContextManager)
{
AuthContext = authContext;
TenantManager = tenantManager;
FeedDbContext = dbContextManager.Get(dbId);
LazyFeedDbContext = new Lazy<FeedDbContext>(() => dbContextManager.Get(dbId));
}
public DateTime GetTimeReaded()

View File

@ -24,6 +24,7 @@
*/
using System;
using System.Collections.Generic;
using System.Linq;
@ -39,11 +40,12 @@ namespace ASC.IPSecurity
{
private const string dbId = "core";
private TenantDbContext TenantDbContext { get; }
private Lazy<TenantDbContext> LazyTenantDbContext { get; }
private TenantDbContext TenantDbContext { get => LazyTenantDbContext.Value; }
public IPRestrictionsRepository(DbContextManager<TenantDbContext> dbContextManager)
{
TenantDbContext = dbContextManager.Get(dbId);
LazyTenantDbContext = new Lazy<TenantDbContext>(() => dbContextManager.Get(dbId));
}
public List<IPRestriction> Get(int tenant)

View File

@ -36,11 +36,12 @@ namespace ASC.VoipService.Dao
{
private readonly string dbid = "default";
protected VoipDbContext VoipDbContext { get; set; }
private Lazy<VoipDbContext> LazyVoipDbContext { get; }
protected VoipDbContext VoipDbContext { get => LazyVoipDbContext.Value; }
protected AbstractDao(DbContextManager<VoipDbContext> dbOptions, TenantManager tenantManager)
{
VoipDbContext = dbOptions.Get(dbid);
LazyVoipDbContext = new Lazy<VoipDbContext>(() => dbOptions.Get(dbid));
TenantID = tenantManager.GetCurrentTenant().TenantId;
}

View File

@ -30,7 +30,6 @@ using ASC.ApiSystem.Controllers;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using Autofac;
@ -82,8 +81,6 @@ namespace ASC.ApiSystem
services.AddAuthentication()
.AddScheme<AuthenticationSchemeOptions, AuthHandler>("auth.allowskip", _ => { })
.AddScheme<AuthenticationSchemeOptions, AuthHandler>("auth.allowskip.registerportal", _ => { });
LogNLogExtension.ConfigureLog(diHelper, "ASC.Apisystem");
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

View File

@ -44,14 +44,15 @@ namespace ASC.AuditTrail
{
private MessageTarget MessageTarget { get; set; }
private UserFormatter UserFormatter { get; set; }
private AuditTrailContext AuditTrailContext { get; }
private Lazy<AuditTrailContext> LazyAuditTrailContext { get; }
private AuditTrailContext AuditTrailContext { get => LazyAuditTrailContext.Value; }
private AuditActionMapper AuditActionMapper { get; }
public AuditEventsRepository(MessageTarget messageTarget, UserFormatter userFormatter, DbContextManager<AuditTrailContext> dbContextManager, AuditActionMapper auditActionMapper)
{
MessageTarget = messageTarget;
UserFormatter = userFormatter;
AuditTrailContext = dbContextManager.Value;
LazyAuditTrailContext = new Lazy<AuditTrailContext>(() => dbContextManager.Value );
AuditActionMapper = auditActionMapper;
}

View File

@ -43,14 +43,15 @@ namespace ASC.AuditTrail.Data
[Scope]
public class LoginEventsRepository
{
private UserFormatter UserFormatter { get; }
private AuditTrailContext AuditTrailContext { get; }
private UserFormatter UserFormatter { get; }
private Lazy<AuditTrailContext> LazyAuditTrailContext { get; }
private AuditTrailContext AuditTrailContext { get => LazyAuditTrailContext.Value; }
private AuditActionMapper AuditActionMapper { get; }
public LoginEventsRepository(UserFormatter userFormatter, DbContextManager<AuditTrailContext> dbContextManager, AuditActionMapper auditActionMapper)
{
UserFormatter = userFormatter;
AuditTrailContext = dbContextManager.Value;
LazyAuditTrailContext = new Lazy<AuditTrailContext>(() => dbContextManager.Value);
AuditActionMapper = auditActionMapper;
}

View File

@ -31,7 +31,6 @@ using System.Threading.Tasks;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using Autofac;
@ -84,7 +83,6 @@ namespace ASC.Thumbnails.Svc
var diHelper = new DIHelper(services);
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
LogNLogExtension.ConfigureLog(diHelper, "ASC.ClearEvents");
services.AddHostedService<ClearEventsServiceLauncher>();
diHelper.TryAdd<ClearEventsServiceLauncher>();
})

View File

@ -38,8 +38,6 @@ namespace ASC.Data.Backup
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Data.Backup" }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment)
{

View File

@ -37,12 +37,13 @@ namespace ASC.Data.Backup.Storage
{
[Scope]
public class BackupRepository : IBackupRepository
{
private BackupsContext BackupContext { get; }
{
private Lazy<BackupsContext> LazyBackupsContext { get; }
private BackupsContext BackupContext { get => LazyBackupsContext.Value; }
public BackupRepository(DbContextManager<BackupsContext> backupContext)
{
BackupContext = backupContext.Value;
LazyBackupsContext = new Lazy<BackupsContext>(() => backupContext.Value);
}
public void SaveBackupRecord(BackupRecord backup)

View File

@ -63,7 +63,8 @@ namespace ASC.Data.Backup.Tasks
private bool Dump { get; set; }
private TenantManager TenantManager { get; set; }
private TempStream TempStream { get; }
private BackupsContext BackupRecordContext { get; set; }
private Lazy<BackupsContext> LazyBackupsContext { get; }
private BackupsContext BackupRecordContext { get => LazyBackupsContext.Value; }
public BackupPortalTask(DbFactory dbFactory, DbContextManager<BackupsContext> dbContextManager, IOptionsMonitor<ILog> options, TenantManager tenantManager, CoreBaseSettings coreBaseSettings, StorageFactory storageFactory, StorageFactoryConfig storageFactoryConfig, ModuleProvider moduleProvider, TempStream tempStream)
: base(dbFactory, options, storageFactory, storageFactoryConfig, moduleProvider)
@ -71,7 +72,7 @@ namespace ASC.Data.Backup.Tasks
Dump = coreBaseSettings.Standalone;
TenantManager = tenantManager;
TempStream = tempStream;
BackupRecordContext = dbContextManager.Get(DbFactory.ConnectionStringSettings.ConnectionString);
LazyBackupsContext = new Lazy<BackupsContext>(() => dbContextManager.Get(DbFactory.ConnectionStringSettings.ConnectionString));
}
public void Init(int tenantId, string fromConfigPath, string toFilePath, int limit)

View File

@ -34,8 +34,6 @@ namespace ASC.Data.Storage.Encryption
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Data.Storage.Encryption" }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment)
{

View File

@ -6,7 +6,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using Autofac;
@ -64,7 +63,6 @@ namespace ASC.Data.Storage.Migration
{
services.AddMemoryCache();
var diHelper = new DIHelper(services);
LogNLogExtension.ConfigureLog(diHelper, "ASC.Data.Storage.Migration", "ASC.Migration");
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
diHelper.RegisterProducts(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath);

View File

@ -92,8 +92,9 @@ namespace ASC.ElasticSearch
private TenantManager TenantManager { get; }
private BaseIndexerHelper BaseIndexerHelper { get; }
private Settings Settings { get; }
private IServiceProvider ServiceProvider { get; }
private WebstudioDbContext WebstudioDbContext { get; }
private IServiceProvider ServiceProvider { get; }
private Lazy<WebstudioDbContext> LazyWebstudioDbContext { get; }
private WebstudioDbContext WebstudioDbContext { get => LazyWebstudioDbContext.Value; }
public BaseIndexer(
Client client,
@ -110,7 +111,7 @@ namespace ASC.ElasticSearch
BaseIndexerHelper = baseIndexerHelper;
Settings = settings;
ServiceProvider = serviceProvider;
WebstudioDbContext = dbContextManager.Value;
LazyWebstudioDbContext = new Lazy<WebstudioDbContext>(() => dbContextManager.Value);
}
internal void Index(T data, bool immediately = true)

View File

@ -6,7 +6,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using ASC.Core.Notify.Senders;
using ASC.Notify.Config;
@ -67,7 +66,6 @@ namespace ASC.Notify
services.AddMemoryCache();
var diHelper = new DIHelper(services);
LogNLogExtension.ConfigureLog(diHelper, "ASC.Notify", "ASC.Notify.Messages");
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
diHelper.RegisterProducts(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath);

View File

@ -32,7 +32,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using Autofac;
@ -93,8 +92,7 @@ namespace ASC.Socket.IO.Svc
var diHelper = new DIHelper(services);
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
diHelper.RegisterProducts(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath);
LogNLogExtension.ConfigureLog(diHelper, "ASC.Socket.IO.Svc");
services.AddHostedService<SocketServiceLauncher>();
diHelper.TryAdd<SocketServiceLauncher>();
})

View File

@ -32,7 +32,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using ASC.SsoAuth.Svc;
@ -94,8 +93,7 @@ namespace ASC.Socket.IO.Svc
var diHelper = new DIHelper(services);
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
diHelper.RegisterProducts(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath);
LogNLogExtension.ConfigureLog(diHelper, "ASC.SsoAuth.Svc");
services.AddHostedService<Launcher>();
diHelper.TryAdd<Launcher>();
})

View File

@ -6,7 +6,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using ASC.Core.Notify;
using ASC.Notify;
@ -69,7 +68,6 @@ namespace ASC.Studio.Notify
var diHelper = new DIHelper(services);
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
diHelper.RegisterProducts(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath);
LogNLogExtension.ConfigureLog(diHelper, "ASC.Notify", "ASC.Notify.Messages");
services.AddHostedService<ServiceLauncher>();
diHelper.TryAdd<ServiceLauncher>();
NotifyConfigurationExtension.Register(diHelper);

View File

@ -34,8 +34,6 @@ namespace ASC.TelegramService
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.TelegramService" }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment)
{

View File

@ -32,7 +32,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using Autofac;
@ -92,8 +91,7 @@ namespace ASC.Thumbnails.Svc
services.AddMemoryCache();
var diHelper = new DIHelper(services);
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
LogNLogExtension.ConfigureLog(diHelper, "ASC.Thumbnails.Svc");
diHelper.TryAdd(typeof(ICacheNotify<>), typeof(KafkaCache<>));
services.AddHostedService<ThumbnailsServiceLauncher>();
diHelper.TryAdd<ThumbnailsServiceLauncher>();
})

View File

@ -31,7 +31,6 @@ using System.Threading.Tasks;
using ASC.Api.Core;
using ASC.Common;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using Autofac;
@ -93,8 +92,7 @@ namespace ASC.UrlShortener.Svc
services.AddMemoryCache();
var diHelper = new DIHelper(services);
LogNLogExtension.ConfigureLog(diHelper, "ASC.UrlShortener.Svc");
services.AddHostedService<UrlShortenerServiceLauncher>();
diHelper.TryAdd<UrlShortenerServiceLauncher>();
})

View File

@ -83,7 +83,7 @@ server {
location / {
proxy_pass http://localhost:5001;
location ~* /(manifest.json|service-worker.js|appIcon.png|bg-error.png) {
location ~* /(manifest.json|sw.js|appIcon.png|bg-error.png) {
root $public_root;
try_files /$basename /index.html =404;
}

8
config/workbox-config.js Normal file
View File

@ -0,0 +1,8 @@
module.exports = {
globDirectory: 'build/deploy/',
globPatterns: [
'**/*.{ico,woff2,svg,html,json,js,png}'
],
swSrc: 'packages/asc-web-common/utils/sw-template.js',
swDest: 'build/deploy/public/sw.js'
};

View File

@ -0,0 +1,11 @@
module.exports = {
globDirectory: 'build/deploy/',
globPatterns: [
'**/*.{ico,woff2,svg,html,json,js,txt,png}'
],
ignoreURLParametersMatching: [
/^utm_/,
/^fbclid$/
],
swDest: 'build/deploy/public/sw.js'
};

View File

@ -26,12 +26,13 @@
"storybook": "yarn workspace @appserver/components storybook",
"storybook-build": "yarn workspace @appserver/components run storybook-build",
"bump": "lerna version --no-push --no-git-tag-version",
"deploy": "rimraf build/deploy && concurrently \"wsrun --parallel deploy\""
"deploy": "rimraf build/deploy && concurrently \"wsrun --parallel deploy\" && cp -r public build/deploy && workbox injectManifest config/workbox-config.js"
},
"devDependencies": {
"lerna": "^3.22.1",
"concurrently": "^5.3.0",
"wsrun": "^5.2.4",
"rimraf": "^3.0.2"
"lerna": "^3.22.1",
"rimraf": "^3.0.2",
"workbox-cli": "^6.1.5",
"wsrun": "^5.2.4"
}
}

View File

@ -1,61 +1,26 @@
import { Workbox } from "workbox-window";
import Snackbar from "@appserver/components/snackbar";
import React from "react";
import ReactDOM from "react-dom";
import SnackBar from "@appserver/components/snackbar";
export function registerSW(homepage) {
export function registerSW() {
if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) {
const wb = new Workbox(`${homepage}/sw.js`);
const wb = new Workbox(`/sw.js`);
//TODO: watch https://developers.google.com/web/tools/workbox/guides/advanced-recipes and https://github.com/webmaxru/prog-web-news/blob/5ff94b45c9d317409c21c0fbb7d76e92f064471b/src/app/app-shell/app-shell.component.ts
const showSkipWaitingPrompt = (event) => {
console.log(
`A new service worker has installed, but it can't activate` +
`until all tabs running the current version have fully unloaded.`
);
/*
const barConfig = {
parentElementId: "snackbar",
text: "New Version Available",
btnText: "Reload",
onAction: () => onButtonClick(),
opacity: 1,
};
// Assuming the user accepted the update, set up a listener
// that will reload the page as soon as the previously waiting
// service worker has taken control.
wb.addEventListener("controlling", () => {
window.location.reload();
});
SnackBar.show(barConfig);
const onButtonClick = () => {
// Assuming the user accepted the update, set up a listener
// that will reload the page as soon as the previously waiting
// service worker has taken control.
wb.addEventListener("controlling", () => {
window.location.reload();
});
// This will postMessage() to the waiting service worker.
wb.messageSkipWaiting();
};*/
/*const barConfig = {
textBody: "New Version Available",
pos: "top_center",
showSecondButton: true,
secondButtonText: "Reload",
onSecondButtonClick: (element) => {
element.style.opacity = 0;
// Assuming the user accepted the update, set up a listener
// that will reload the page as soon as the previously waiting
// service worker has taken control.
wb.addEventListener("controlling", () => {
window.location.reload();
});
// This will postMessage() to the waiting service worker.
wb.messageSkipWaiting();
},
};*/
// This will postMessage() to the waiting service worker.
wb.messageSkipWaiting();
// let snackBarRef = this.snackBar.open(

View File

@ -1,22 +1,20 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.Logging;
using ASC.Common.DependencyInjection;
using ASC.Common.Utils;
using ASC.ElasticSearch;
using ASC.Web.CRM.Core.Search;
using Autofac;
using Autofac.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using ASC.Common.DependencyInjection;
namespace ASC.CRM.BackgroundTasks
@ -73,9 +71,6 @@ namespace ASC.CRM.BackgroundTasks
services.AddHostedService<ServiceLauncher>();
diHelper.TryAdd<ServiceLauncher>();
LogNLogExtension.ConfigureLog(diHelper, "ASC.Files", "ASC.Feed.Agregator");
diHelper.TryAdd<FactoryIndexerCase>();
diHelper.TryAdd<FactoryIndexerContact>();
diHelper.TryAdd<FactoryIndexerContactInfo>();

View File

@ -35,8 +35,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import App from "./App";
import React from "react";
import ReactDOM from "react-dom";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -194,14 +193,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -136,11 +136,6 @@ namespace ASC.CRM.ApiModels
Data = "support@onlyoffice.com",
InfoType = ContactInfoType.Email
};
}
public void Mapping(Profile profile)
{
profile.CreateMap<ContactInfo, ContactInfoDto>();
}
}
}
}

View File

@ -31,7 +31,7 @@ using System.Linq;
using ASC.Common;
using ASC.Common.Web;
using ASC.Core;
using ASC.Core.Common.EF;
using ASC.Core.Common.EF;
using ASC.CRM.Resources;
using ASC.Files.Core.EF;
using ASC.Web.Core;
@ -44,8 +44,10 @@ namespace ASC.Web.CRM.Configuration
[Scope]
public class CrmSpaceUsageStatManager : SpaceUsageStatManager
{
private int _tenantId;
private FilesDbContext _filesDbContext;
private int _tenantId;
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
private FilesDbContext _filesDbContext { get => LazyFilesDbContext.Value; }
private PathProvider _pathProvider;
public CrmSpaceUsageStatManager(DbContextManager<FilesDbContext> filesDbContext,
@ -53,7 +55,7 @@ namespace ASC.Web.CRM.Configuration
TenantManager tenantManager)
{
_pathProvider = pathProvider;
_filesDbContext = filesDbContext.Value;
LazyFilesDbContext = new Lazy<FilesDbContext>(() => filesDbContext.Value);
_tenantId = tenantManager.GetCurrentTenant().TenantId;
}

View File

@ -45,8 +45,11 @@ namespace ASC.CRM.Core.Dao
{
public class AbstractDao
{
protected readonly List<EntityType> _supportedEntityType = new List<EntityType>();
public CrmDbContext CrmDbContext { get; }
protected readonly List<EntityType> _supportedEntityType = new List<EntityType>();
private Lazy<CrmDbContext> LazyCrmDbContext { get; }
public CrmDbContext CrmDbContext { get => LazyCrmDbContext.Value; }
protected readonly SecurityContext _securityContext;
protected readonly ICache _cache;
protected ILog _logger;
@ -66,7 +69,7 @@ namespace ASC.CRM.Core.Dao
_cache = ascCache;
CrmDbContext = dbContextManager.Get(CrmConstants.DatabaseId);
LazyCrmDbContext = new Lazy<CrmDbContext>(() => dbContextManager.Get(CrmConstants.DatabaseId));
TenantID = tenantManager.GetCurrentTenant().TenantId;
_securityContext = securityContext;

View File

@ -390,7 +390,7 @@ namespace ASC.CRM.Core.Dao
if (result > 0)
{
_cache.Insert(cacheKey, result, TimeSpan.FromSeconds(30));
_cache.Insert(cacheKey, result.ToString(), TimeSpan.FromSeconds(30));
}
return result;

View File

@ -326,7 +326,7 @@ namespace ASC.CRM.Core.Dao
}
if (result > 0)
{
_cache.Insert(cacheKey, result, TimeSpan.FromMinutes(1));
_cache.Insert(cacheKey, result.ToString(), TimeSpan.FromMinutes(1));
}
return result;

View File

@ -544,7 +544,7 @@ namespace ASC.CRM.Core.Dao
}
if (result > 0)
{
_cache.Insert(cacheKey, result, TimeSpan.FromSeconds(30));
_cache.Insert(cacheKey, result.ToString(), TimeSpan.FromSeconds(30));
}
return result;

View File

@ -397,7 +397,7 @@ namespace ASC.CRM.Core.Dao
if (result > 0)
{
_cache.Insert(cacheKey, result, TimeSpan.FromSeconds(30));
_cache.Insert(cacheKey, result.ToString(), TimeSpan.FromSeconds(30));
}
return result;
}

View File

@ -232,7 +232,7 @@ namespace ASC.CRM.Core.Dao
if (result > 0)
{
_cache.Insert(cacheKey, result, TimeSpan.FromSeconds(30));
_cache.Insert(cacheKey, result.ToString(), TimeSpan.FromSeconds(30));
}
return result;
}

View File

@ -73,13 +73,11 @@ namespace ASC.CRM.Core.Dao
private CurrencyInfo _defaultCurrency;
private TenantUtil _tenantUtil;
private DaoFactory _daoFactory;
private UserDbContext _userDbContext;
private DisplayUserSettingsHelper _displayUserSettings;
#region Constructor
public ReportDao(DbContextManager<CrmDbContext> dbContextManager,
DbContextManager<UserDbContext> dbUserContextManager,
TenantManager tenantManager,
SecurityContext securityContext,
FilesIntegration filesIntegration,
@ -112,8 +110,6 @@ namespace ASC.CRM.Core.Dao
var crmSettings = settingsManager.Load<CrmSettings>();
_userDbContext = dbUserContextManager.Get(CrmConstants.DatabaseId);
_defaultCurrency = currencyProvider.Get(crmSettings.DefaultCurrency);
_displayUserSettings = displayUserSettingsHelper;
@ -313,7 +309,7 @@ namespace ASC.CRM.Core.Dao
var file = _daoFactory.GetFileDao().SaveFile(document, stream);
SaveFile((int)file.ID, -1);
SaveFile(file.ID, -1);
result.Add(file);
}

View File

@ -52,10 +52,12 @@ namespace ASC.CRM.Core.Dao
[Scope]
public class TaskDao : AbstractDao
{
private readonly UserDbContext _userDbContext;
private readonly FactoryIndexerTask _factoryIndexer;
private readonly TenantUtil _tenantUtil;
private readonly CrmSecurity _crmSecurity;
private Lazy<UserDbContext> LazyUserDbContext { get; }
private UserDbContext _userDbContext { get => LazyUserDbContext.Value; }
public TaskDao(DbContextManager<CrmDbContext> dbContextManager,
TenantManager tenantManager,
@ -77,7 +79,7 @@ namespace ASC.CRM.Core.Dao
_crmSecurity = crmSecurity;
_tenantUtil = tenantUtil;
_factoryIndexer = factoryIndexer;
_userDbContext = userDbContext.Value;
LazyUserDbContext = new Lazy<UserDbContext>(() => userDbContext.Value);
_mapper = mapper;
}
@ -510,7 +512,7 @@ namespace ASC.CRM.Core.Dao
if (result > 0)
{
_cache.Insert(cacheKey, result, TimeSpan.FromMinutes(1));
_cache.Insert(cacheKey, result.ToString(), TimeSpan.FromMinutes(1));
}
return result;

View File

@ -27,10 +27,13 @@
using System;
using ASC.Common.Mapping;
using ASC.CRM.ApiModels;
using ASC.CRM.Classes;
using ASC.CRM.Core.EF;
using ASC.CRM.Core.Enums;
using AutoMapper;
namespace ASC.CRM.Core
{
public class ContactInfo : DomainObject, IMapFrom<DbContactInfo>
@ -78,5 +81,12 @@ namespace ASC.CRM.Core
return typeof(ContactInfoBaseCategory);
}
}
public void Mapping(Profile profile)
{
profile.CreateMap<DbContactInfo, ContactInfo>()
.ForMember(x => x.InfoType, opt => opt.MapFrom(x => x.Type));
}
}
}

View File

@ -35,8 +35,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import App from "./App";
import React from "react";
import ReactDOM from "react-dom";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -194,14 +193,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -13,8 +13,6 @@ namespace ASC.Calendar
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Calendar" }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment)
: base(configuration, hostEnvironment)
{

View File

@ -39,8 +39,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import App from "./App";
import React from "react";
import ReactDOM from "react-dom";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -199,14 +198,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -44,8 +44,9 @@ namespace ASC.Web.Files
{
[Scope]
public class FilesSpaceUsageStatManager : SpaceUsageStatManager
{
private ASC.Files.Core.EF.FilesDbContext FilesDbContext { get; }
{
private Lazy<ASC.Files.Core.EF.FilesDbContext> LazyFilesDbContext { get; }
private ASC.Files.Core.EF.FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
private TenantManager TenantManager { get; }
private UserManager UserManager { get; }
private UserPhotoManager UserPhotoManager { get; }
@ -64,7 +65,7 @@ namespace ASC.Web.Files
GlobalFolderHelper globalFolderHelper,
PathProvider pathProvider)
{
FilesDbContext = dbContextManager.Get(FileConstant.DatabaseId);
LazyFilesDbContext = new Lazy<ASC.Files.Core.EF.FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
TenantManager = tenantManager;
UserManager = userManager;
UserPhotoManager = userPhotoManager;
@ -126,15 +127,16 @@ namespace ASC.Web.Files
[Scope]
public class FilesUserSpaceUsage : IUserSpaceUsage
{
private ASC.Files.Core.EF.FilesDbContext FilesDbContext { get; }
{
private Lazy<ASC.Files.Core.EF.FilesDbContext> LazyFilesDbContext { get; }
private ASC.Files.Core.EF.FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
private TenantManager TenantManager { get; }
public FilesUserSpaceUsage(
DbContextManager<ASC.Files.Core.EF.FilesDbContext> dbContextManager,
TenantManager tenantManager)
{
FilesDbContext = dbContextManager.Get(FileConstant.DatabaseId);
LazyFilesDbContext = new Lazy<ASC.Files.Core.EF.FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
TenantManager = tenantManager;
}

View File

@ -49,9 +49,10 @@ namespace ASC.Files.Core.Data
{
public class AbstractDao
{
protected readonly ICache cache;
public FilesDbContext FilesDbContext { get; }
protected readonly ICache cache;
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
public FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
private int tenantID;
protected internal int TenantID { get => tenantID != 0 ? tenantID : (tenantID = TenantManager.GetCurrentTenant().TenantId); }
@ -83,7 +84,7 @@ namespace ASC.Files.Core.Data
ICache cache)
{
this.cache = cache;
FilesDbContext = dbContextManager.Get(FileConstant.DatabaseId);
LazyFilesDbContext = new Lazy<FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
UserManager = userManager;
TenantManager = tenantManager;
TenantUtil = tenantUtil;

View File

@ -211,8 +211,9 @@ namespace ASC.Files.Thirdparty
public int TenantID { get; private set; }
protected IServiceProvider ServiceProvider { get; }
protected UserManager UserManager { get; }
protected TenantUtil TenantUtil { get; }
protected FilesDbContext FilesDbContext { get; }
protected TenantUtil TenantUtil { get; }
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
protected FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
protected SetupInfo SetupInfo { get; }
protected ILog Log { get; }
protected FileUtility FileUtility { get; }
@ -237,7 +238,7 @@ namespace ASC.Files.Thirdparty
ServiceProvider = serviceProvider;
UserManager = userManager;
TenantUtil = tenantUtil;
FilesDbContext = dbContextManager.Get(FileConstant.DatabaseId);
LazyFilesDbContext = new Lazy<FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
SetupInfo = setupInfo;
Log = monitor.CurrentValue;
FileUtility = fileUtility;

View File

@ -80,8 +80,9 @@ namespace ASC.Files.Thirdparty
internal class ProviderAccountDao : IProviderDao
{
private int tenantID;
protected int TenantID { get => tenantID != 0 ? tenantID : (tenantID = TenantManager.GetCurrentTenant().TenantId); }
private FilesDbContext FilesDbContext { get; }
protected int TenantID { get => tenantID != 0 ? tenantID : (tenantID = TenantManager.GetCurrentTenant().TenantId); }
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
private FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
public ILog Logger { get; }
private IServiceProvider ServiceProvider { get; }
private TenantUtil TenantUtil { get; }
@ -102,7 +103,7 @@ namespace ASC.Files.Thirdparty
DbContextManager<FilesDbContext> dbContextManager,
IOptionsMonitor<ILog> options)
{
FilesDbContext = dbContextManager.Get(FileConstant.DatabaseId);
LazyFilesDbContext = new Lazy<FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
Logger = options.Get("ASC.Files");
ServiceProvider = serviceProvider;
TenantUtil = tenantUtil;

View File

@ -88,8 +88,9 @@ namespace ASC.Web.Files.ThirdPartyApp
[Scope]
public class TokenHelper
{
public ILog Logger { get; }
private FilesDbContext FilesDbContext { get; }
public ILog Logger { get; }
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
private FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
private InstanceCrypto InstanceCrypto { get; }
private AuthContext AuthContext { get; }
private TenantManager TenantManager { get; }
@ -102,7 +103,7 @@ namespace ASC.Web.Files.ThirdPartyApp
TenantManager tenantManager)
{
Logger = option.CurrentValue;
FilesDbContext = dbContextManager.Get(FileConstant.DatabaseId);
LazyFilesDbContext = new Lazy<FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
InstanceCrypto = instanceCrypto;
AuthContext = authContext;
TenantManager = tenantManager;

View File

@ -16,8 +16,7 @@ using Microsoft.Extensions.Hosting;
namespace ASC.Files
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Files" }; }
{
public override JsonConverter[] Converters { get => new JsonConverter[] { new FileEntryWrapperConverter() }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment)

View File

@ -6,7 +6,6 @@ using ASC.Api.Core;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.DependencyInjection;
using ASC.Common.Logging;
using ASC.Common.Utils;
using ASC.ElasticSearch;
using ASC.Feed.Aggregator;
@ -83,7 +82,6 @@ namespace ASC.Files.Service
services.AddHostedService<Launcher>();
diHelper.TryAdd<Launcher>();
LogNLogExtension.ConfigureLog(diHelper, "ASC.Files", "ASC.Feed.Agregator");
//diHelper.TryAdd<FileConverter>();
diHelper.TryAdd<FactoryIndexerFile>();
diHelper.TryAdd<FactoryIndexerFolder>();

View File

@ -35,8 +35,10 @@ namespace ASC.Files.ThumbnailBuilder
{
private readonly ThumbnailSettings thumbnailSettings;
private readonly ICache cache;
private readonly FilesDbContext filesDbContext;
private readonly CoreDbContext coreDbContext;
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
private FilesDbContext filesDbContext { get => LazyFilesDbContext.Value; }
private Lazy<CoreDbContext> LazyCoreDbContext { get; }
private CoreDbContext coreDbContext { get => LazyCoreDbContext.Value; }
private readonly string cacheKey;
public FileDataProvider(
@ -48,8 +50,8 @@ namespace ASC.Files.ThumbnailBuilder
{
this.thumbnailSettings = thumbnailSettings;
cache = ascCache;
filesDbContext = dbContextManager.Get(thumbnailSettings.ConnectionStringName);
coreDbContext = coredbContextManager.Get(thumbnailSettings.ConnectionStringName);
LazyFilesDbContext = new Lazy<FilesDbContext>(() => dbContextManager.Get(thumbnailSettings.ConnectionStringName));
LazyCoreDbContext = new Lazy<CoreDbContext>(() => coredbContextManager.Get(thumbnailSettings.ConnectionStringName));
cacheKey = "PremiumTenants";
}

View File

@ -35,8 +35,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import App from "./App";
import React from "react";
import ReactDOM from "react-dom";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -194,14 +193,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -13,8 +13,6 @@ namespace ASC.Mail
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Mail" }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment)
: base(configuration, hostEnvironment)
{

View File

@ -35,8 +35,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import App from "./App";
import React from "react";
import ReactDOM from "react-dom";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -203,14 +202,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -11,7 +11,6 @@ namespace ASC.People
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Api", "ASC.Web" }; }
public override bool ConfirmAddScheme { get => true; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment)

View File

@ -35,8 +35,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import App from "./App";
import React from "react";
import ReactDOM from "react-dom";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -194,14 +193,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -13,8 +13,6 @@ namespace ASC.Projects
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Projects" }; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment)
: base(configuration, hostEnvironment)
{

View File

@ -1,111 +0,0 @@
const precacheVersion = 1;
const precacheName = 'precache-v' + precacheVersion;
const precacheFiles = [
'/',
'/bg-error.png',
'/api/2.0/modules',
'/api/2.0/people/info.json',
'/api/2.0/people/@self.json',
'/api/2.0/settings.json',
];
self.addEventListener('install', (e) => {
self.skipWaiting();
e.waitUntil(
caches.open(precacheName).then((cache) => {
return cache.addAll(precacheFiles);
})
);
});
self.addEventListener('activate', (e) => {
e.waitUntil(
caches.keys().then((cacheNames) => {
return Promise.all(cacheNames.map((thisCacheName) => {
if (thisCacheName.includes("precache") && thisCacheName !== precacheName) {
console.log('[ServiceWorker] Removing cached files from old cache - ', thisCacheName);
return caches.delete(thisCacheName);
}
}));
})
);
});
self.addEventListener('fetch', (e) => {
e.respondWith(
fetch(e.request)
.then((fetchResponse) => {
e.waitUntil(
update(e.request).then(refresh)
);
return fetchResponse;
})
.catch((err) => {
return caches.match(e.request)
.then((cachesResponse) =>{
if(cachesResponse){
return cachesResponse;
}else{
return useFallback();
}
})
})
);
});
function update(request) {
return caches.open(precacheName).then((cache) =>
{
caches.match(request).then((cachesResponse) => {
if(cachesResponse){
fetch(request).then((response) =>
cache.put(request, response.clone()).then(() => response)
).catch((err) => console.log(`[ServiceWorker] ${err}`));
}
})
}
);
}
const fallback =
'<div style="cursor: default;background: url(/bg-error.png);width: 100%;height: 310px;padding: 315px 0 0;background-repeat: no-repeat;background-position: 50%;'+
'margin-top: -325px;'+
'position: absolute;'+
'left: 0;'+
'top: 50%;'+
'z-index: 1;">'+
'<div style="width: 310px;'+
'margin: 0 auto;'+
'padding-left: 38px;'+
'text-align: center;'+
'font: normal 24px/35px Tahoma;'+
'color: #275678;'+
'position: relative;">\n'+
'<p>No internet connection found.</p>\n'+
'</div>\n'+
'</div>';
function useFallback() {
return Promise.resolve(new Response(fallback, { headers: {
'Content-Type': 'text/html; charset=utf-8'
}}));
}
function refresh(response) {
//Send data update messages to all clients
/*return self.clients.matchAll().then((clients) => {
clients.forEach((client) => {
const message = {
type: 'refresh',
url: response.url,
eTag: response.headers.get('ETag')
};
client.postMessage(JSON.stringify(message));
});
});*/
}

View File

@ -11,7 +11,6 @@ namespace ASC.Web.Api
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Api", "ASC.Web" }; }
public override bool ConfirmAddScheme { get => true; }
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment)

View File

@ -34,8 +34,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
@ -215,15 +214,6 @@ module.exports = (env, argv) => {
}),
],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -41,7 +41,9 @@ namespace ASC.Web.Core.Files
[Scope]
public class FileUtility
{
private DbContextManager<FilesDbContext> FilesDbContext { get; set; }
private Lazy<FilesDbContext> LazyFilesDbContext { get; }
private FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
public FileUtility(
IConfiguration configuration,
FilesLinkUtility filesLinkUtility,
@ -49,7 +51,7 @@ namespace ASC.Web.Core.Files
{
Configuration = configuration;
FilesLinkUtility = filesLinkUtility;
FilesDbContext = dbContextManager;
LazyFilesDbContext = new Lazy<FilesDbContext>(() => dbContextManager.Get("files"));
CanForcesave = GetCanForcesave();
}
@ -178,9 +180,7 @@ namespace ASC.Web.Core.Files
_extsConvertible = new Dictionary<string, List<string>>();
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceConverterUrl)) return _extsConvertible;
const string databaseId = "files";
var dbManager = FilesDbContext.Get(databaseId);
var dbManager = FilesDbContext;
var list = dbManager.FilesConverts.Select(r => new { r.Input, r.Output }).ToList();

View File

@ -78,7 +78,8 @@ namespace ASC.Web.Core.Mail
private CoreBaseSettings CoreBaseSettings { get; }
public MailServiceHelperStorage MailServiceHelperStorage { get; }
private EFLoggerFactory LoggerFactory { get; }
private MailDbContext MailDbContext { get; }
private Lazy<MailDbContext> LazyMailDbContext { get; }
private MailDbContext MailDbContext { get => LazyMailDbContext.Value; }
private ICache Cache { get; }
public MailServiceHelper(
@ -97,7 +98,7 @@ namespace ASC.Web.Core.Mail
CoreBaseSettings = coreBaseSettings;
MailServiceHelperStorage = mailServiceHelperStorage;
LoggerFactory = loggerFactory;
MailDbContext = dbContext.Get("webstudio");
LazyMailDbContext = new Lazy<MailDbContext>(() => dbContext.Get("webstudio"));
Cache = mailServiceHelperStorage.Cache;
DefaultDatabase = GetDefaultDatabase();
}

View File

@ -38,11 +38,12 @@ namespace ASC.Web.Core.Mobile
[Scope]
public class MobileAppInstallRegistrator : IMobileAppInstallRegistrator
{
private DbContext DbContext { get; }
private Lazy<DbContext> LazyDbContext { get; }
private DbContext DbContext { get => LazyDbContext.Value; }
public MobileAppInstallRegistrator(DbContextManager<DbContext> dbContext)
{
DbContext = dbContext.Value;
LazyDbContext = new Lazy<DbContext>(() => dbContext.Value);
}
public void RegisterInstall(string userEmail, MobileAppType appType)

View File

@ -45,11 +45,12 @@ namespace ASC.Web.Studio.Core.Statistic
private static readonly TimeSpan cacheTime = TimeSpan.FromMinutes(2);
private static readonly IDictionary<string, UserVisit> cache = new Dictionary<string, UserVisit>();
private WebstudioDbContext WebstudioDbContext { get; }
private Lazy<WebstudioDbContext> LazyWebstudioDbContext { get; }
private WebstudioDbContext WebstudioDbContext { get => LazyWebstudioDbContext.Value; }
public StatisticManager(DbContextManager<WebstudioDbContext> dbContextManager)
{
WebstudioDbContext = dbContextManager.Value;
LazyWebstudioDbContext = new Lazy<WebstudioDbContext>(() => dbContextManager.Value);
}
public void SaveUserVisit(int tenantID, Guid userID, Guid productID)

View File

@ -34,8 +34,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.13.9",

View File

@ -1,9 +1,8 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
const { proxyURL } = AppServerConfig;
@ -197,14 +196,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -35,8 +35,7 @@
"terser-webpack-plugin": "^5.1.1",
"webpack": "5.14.0",
"webpack-cli": "4.5.0",
"webpack-dev-server": "3.11.2",
"workbox-webpack-plugin": "^6.1.1"
"webpack-dev-server": "3.11.2"
},
"dependencies": {
"@babel/runtime": "^7.12.5",

View File

@ -1,9 +1,8 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import config from "../package.json";
import { registerSW } from "@appserver/common/utils/sw-helper";
ReactDOM.render(<App />, document.getElementById("root"));
registerSW(config.homepage);
registerSW();

View File

@ -4,7 +4,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ModuleFederationPlugin = require("webpack").container
.ModuleFederationPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { InjectManifest } = require("workbox-webpack-plugin");
const combineUrl = require("@appserver/common/utils/combineUrl");
const AppServerConfig = require("@appserver/common/constants/AppServerConfig");
const { proxyURL } = AppServerConfig;
@ -196,14 +195,6 @@ module.exports = (env, argv) => {
minimize: true,
minimizer: [new TerserPlugin()],
};
config.plugins.push(
new InjectManifest({
mode: "production", //"development",
swSrc: "@appserver/common/utils/sw-template.js", // this is your sw template file
swDest: "sw.js", // this will be created in the build step
exclude: [/\.map$/, /manifest$/, /service-worker\.js$/],
})
);
} else {
config.devtool = "cheap-module-source-map";
}

View File

@ -15,9 +15,7 @@ using Microsoft.Extensions.Hosting;
namespace ASC.Web.Studio
{
public class Startup : BaseStartup
{
public override string[] LogParams { get => new string[] { "ASC.Web" }; }
{
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment)
{
}

475
yarn.lock
View File

@ -3202,6 +3202,11 @@
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25"
integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==
"@sindresorhus/is@^0.14.0":
version "0.14.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
"@storybook/addon-actions@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.3.0.tgz#e5a24c69d70da9aa98560f19d10c06a50495ca2e"
@ -4193,6 +4198,13 @@
"@svgr/plugin-svgo" "^5.5.0"
loader-utils "^2.0.0"
"@szmarczak/http-timer@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
dependencies:
defer-to-connect "^1.0.1"
"@tanem/svg-injector@^9.0.1":
version "9.0.5"
resolved "https://registry.yarnpkg.com/@tanem/svg-injector/-/svg-injector-9.0.5.tgz#41a104301a812abc99caf89879eb355f5ea69087"
@ -5355,6 +5367,11 @@ array-differ@^2.0.3:
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1"
integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==
array-each@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8=
array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
@ -5396,6 +5413,11 @@ array-includes@^3.0.3, array-includes@^3.1.2, array-includes@^3.1.3:
get-intrinsic "^1.1.1"
is-string "^1.0.5"
array-slice@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4"
integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==
array-union@^1.0.1, array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@ -5518,6 +5540,16 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
async-done@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2"
integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.2"
process-nextick-args "^2.0.0"
stream-exhaust "^1.0.1"
async-each@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
@ -5855,7 +5887,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base64-js@^1.0.2:
base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@ -5924,6 +5956,15 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"
bl@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
readable-stream "^3.4.0"
bluebird@^3.3.5, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@ -6165,6 +6206,14 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
dependencies:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builtin-modules@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
@ -6259,6 +6308,19 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
cacheable-request@^6.0.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
dependencies:
clone-response "^1.0.2"
get-stream "^5.1.0"
http-cache-semantics "^4.0.0"
keyv "^3.0.0"
lowercase-keys "^2.0.0"
normalize-url "^4.1.0"
responselike "^1.0.2"
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
@ -6496,7 +6558,7 @@ cheerio@^1.0.0-rc.3:
optionalDependencies:
fsevents "~2.3.1"
chokidar@^2.1.8:
chokidar@^2.0.0, chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
@ -6614,6 +6676,11 @@ cli-cursor@^3.1.0:
dependencies:
restore-cursor "^3.1.0"
cli-spinners@^2.5.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939"
integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==
cli-table3@0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee"
@ -6669,6 +6736,13 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
clone-response@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
dependencies:
mimic-response "^1.0.0"
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@ -6931,6 +7005,18 @@ config-chain@^1.1.11:
ini "^1.3.4"
proto-list "~1.2.1"
configstore@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
dependencies:
dot-prop "^5.2.0"
graceful-fs "^4.1.2"
make-dir "^3.0.0"
unique-string "^2.0.0"
write-file-atomic "^3.0.0"
xdg-basedir "^4.0.0"
connect-history-api-fallback@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
@ -7567,6 +7653,13 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
decompress-response@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
dependencies:
mimic-response "^1.0.0"
dedent@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
@ -7626,6 +7719,11 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
defer-to-connect@^1.0.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@ -7960,7 +8058,7 @@ dot-prop@^4.2.0:
dependencies:
is-obj "^1.0.0"
dot-prop@^5.1.0:
dot-prop@^5.1.0, dot-prop@^5.2.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
@ -8006,6 +8104,11 @@ downshift@^6.0.15:
prop-types "^15.7.2"
react-is "^17.0.2"
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
duplexer@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
@ -8344,6 +8447,11 @@ escalade@^3.0.2, escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
escape-goat@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@ -9068,11 +9176,18 @@ for-each@^0.3.3:
dependencies:
is-callable "^1.1.3"
for-in@^1.0.2:
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
for-own@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
dependencies:
for-in "^1.0.1"
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@ -9384,6 +9499,13 @@ get-stream@^4.0.0, get-stream@^4.1.0:
dependencies:
pump "^3.0.0"
get-stream@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
dependencies:
pump "^3.0.0"
get-stream@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
@ -9504,6 +9626,19 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
glob-watcher@^5.0.5:
version "5.0.5"
resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc"
integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==
dependencies:
anymatch "^2.0.0"
async-done "^1.2.0"
chokidar "^2.0.0"
is-negated-glob "^1.0.0"
just-debounce "^1.0.0"
normalize-path "^3.0.0"
object.defaults "^1.1.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
@ -9516,6 +9651,13 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl
once "^1.3.0"
path-is-absolute "^1.0.0"
global-dirs@^2.0.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
dependencies:
ini "1.3.7"
global-modules@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
@ -9627,6 +9769,23 @@ good-listener@^1.2.2:
dependencies:
delegate "^3.1.2"
got@^9.6.0:
version "9.6.0"
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
dependencies:
"@sindresorhus/is" "^0.14.0"
"@szmarczak/http-timer" "^1.1.2"
cacheable-request "^6.0.0"
decompress-response "^3.3.0"
duplexer3 "^0.1.4"
get-stream "^4.1.0"
lowercase-keys "^1.0.1"
mimic-response "^1.0.1"
p-cancelable "^1.0.0"
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4:
version "4.2.6"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
@ -9760,6 +9919,11 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
has-yarn@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@ -10064,6 +10228,11 @@ http-cache-semantics@^3.8.1:
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
http-cache-semantics@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
http-deceiver@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
@ -10207,7 +10376,7 @@ idb@3.0.2:
resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==
ieee754@^1.1.4:
ieee754@^1.1.13, ieee754@^1.1.4:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@ -10255,6 +10424,11 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
parent-module "^1.0.0"
resolve-from "^4.0.0"
import-lazy@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
import-local@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
@ -10321,6 +10495,11 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
ini@1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
@ -10364,7 +10543,7 @@ inquirer@^6.2.0:
strip-ansi "^5.1.0"
through "^2.3.6"
inquirer@^7.0.0:
inquirer@^7.0.0, inquirer@^7.3.3:
version "7.3.3"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
@ -10673,6 +10852,19 @@ is-hexadecimal@^1.0.0:
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
is-installed-globally@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
dependencies:
global-dirs "^2.0.1"
is-path-inside "^3.0.1"
is-interactive@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
is-map@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
@ -10683,11 +10875,21 @@ is-module@^1.0.0:
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
is-negated-glob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
is-negative-zero@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
is-npm@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d"
integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==
is-number-object@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
@ -10739,6 +10941,11 @@ is-path-inside@^2.1.0:
dependencies:
path-is-inside "^1.0.2"
is-path-inside@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@ -10835,6 +11042,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
is-unicode-supported@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
@ -10872,6 +11084,11 @@ is-wsl@^2.1.1:
dependencies:
is-docker "^2.0.0"
is-yarn-global@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@ -11503,6 +11720,11 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
json-loader@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
@ -11608,6 +11830,11 @@ junk@^3.1.0:
resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
just-debounce@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf"
integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==
keycode@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
@ -11622,6 +11849,13 @@ keycon@^1.1.2:
"@scena/event-emitter" "^1.0.2"
keycode "^2.2.0"
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
dependencies:
json-buffer "3.0.0"
killable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
@ -11668,6 +11902,13 @@ klona@^2.0.4:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
latest-version@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
dependencies:
package-json "^6.3.0"
lazy-universal-dotenv@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38"
@ -11981,6 +12222,14 @@ lodash@4.17.21, lodash@^4, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lo
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
log-symbols@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
dependencies:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
loglevel@^1.6.8:
version "1.7.1"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
@ -12013,6 +12262,16 @@ lower-case@^2.0.2:
dependencies:
tslib "^2.0.3"
lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
lowercase-keys@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
lowlight@^1.14.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888"
@ -12292,6 +12551,23 @@ meow@^4.0.0:
redent "^2.0.0"
trim-newlines "^2.0.0"
meow@^7.1.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306"
integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==
dependencies:
"@types/minimist" "^1.2.0"
camelcase-keys "^6.2.2"
decamelize-keys "^1.1.0"
hard-rejection "^2.1.0"
minimist-options "4.1.0"
normalize-package-data "^2.5.0"
read-pkg-up "^7.0.1"
redent "^3.0.0"
trim-newlines "^3.0.0"
type-fest "^0.13.1"
yargs-parser "^18.1.3"
meow@^8.0.0:
version "8.1.2"
resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"
@ -12413,6 +12689,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
mimic-response@^1.0.0, mimic-response@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@ -12901,6 +13182,11 @@ normalize-url@^3.3.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
normalize-url@^4.1.0:
version "4.5.1"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
npm-bundled@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1"
@ -13062,6 +13348,16 @@ object.assign@^4.1.0, object.assign@^4.1.2:
has-symbols "^1.0.1"
object-keys "^1.1.1"
object.defaults@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=
dependencies:
array-each "^1.0.1"
array-slice "^1.0.0"
for-own "^1.0.0"
isobject "^3.0.0"
object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6"
@ -13135,7 +13431,7 @@ on-headers@~1.0.1, on-headers@~1.0.2:
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
once@^1.3.0, once@^1.3.1, once@^1.4.0:
once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@ -13183,6 +13479,21 @@ optionator@^0.8.1, optionator@^0.8.3:
type-check "~0.3.2"
word-wrap "~1.2.3"
ora@^5.0.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
dependencies:
bl "^4.1.0"
chalk "^4.1.0"
cli-cursor "^3.1.0"
cli-spinners "^2.5.0"
is-interactive "^1.0.0"
is-unicode-supported "^0.1.0"
log-symbols "^4.1.0"
strip-ansi "^6.0.0"
wcwidth "^1.0.1"
original@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
@ -13240,6 +13551,11 @@ p-all@^2.1.0:
dependencies:
p-map "^2.0.0"
p-cancelable@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
p-each-series@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
@ -13389,6 +13705,16 @@ p-waterfall@^1.0.0:
dependencies:
p-reduce "^1.0.0"
package-json@^6.3.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
dependencies:
got "^9.6.0"
registry-auth-token "^4.0.0"
registry-url "^5.0.0"
semver "^6.2.0"
pako@~1.0.5:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
@ -13858,6 +14184,11 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
prettier@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
@ -13868,7 +14199,7 @@ prettier@~2.2.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
pretty-bytes@^5.3.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
@ -13930,7 +14261,7 @@ prismjs@~1.17.0:
optionalDependencies:
clipboard "^2.0.0"
process-nextick-args@~2.0.0:
process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
@ -14143,6 +14474,13 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
pupa@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
dependencies:
escape-goat "^2.0.0"
q@^1.1.2, q@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@ -14325,7 +14663,7 @@ rc-util@^4.15.3, rc-util@^4.5.1:
react-lifecycles-compat "^3.0.4"
shallowequal "^1.1.0"
rc@^1.0.1, rc@^1.1.6:
rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@ -14954,7 +15292,7 @@ read@1, read@~1.0.1:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0:
"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@ -15127,6 +15465,13 @@ registry-auth-token@3.3.2:
rc "^1.1.6"
safe-buffer "^5.0.1"
registry-auth-token@^4.0.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
dependencies:
rc "^1.2.8"
registry-url@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
@ -15134,6 +15479,13 @@ registry-url@3.1.0:
dependencies:
rc "^1.0.1"
registry-url@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
dependencies:
rc "^1.2.8"
regjsgen@^0.5.1:
version "0.5.2"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
@ -15379,6 +15731,13 @@ resolve@^2.0.0-next.3:
is-core-module "^2.2.0"
path-parse "^1.0.6"
responselike@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
dependencies:
lowercase-keys "^1.0.0"
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@ -15662,6 +16021,13 @@ selfsigned@^1.10.8:
dependencies:
node-forge "^0.10.0"
semver-diff@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
dependencies:
semver "^6.3.0"
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@ -16287,6 +16653,11 @@ stream-each@^1.1.0:
end-of-stream "^1.1.0"
stream-shift "^1.0.0"
stream-exhaust@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d"
integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==
stream-http@^2.7.2:
version "2.8.3"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
@ -16988,6 +17359,11 @@ to-object-path@^0.3.0:
dependencies:
kind-of "^3.0.2"
to-readable-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
to-regex-range@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
@ -17139,6 +17515,11 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
type-fest@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
type-fest@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"
@ -17414,6 +17795,25 @@ update-check@1.5.2:
registry-auth-token "3.3.2"
registry-url "3.1.0"
update-notifier@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
dependencies:
boxen "^4.2.0"
chalk "^3.0.0"
configstore "^5.0.1"
has-yarn "^2.1.0"
import-lazy "^2.1.0"
is-ci "^2.0.0"
is-installed-globally "^0.3.1"
is-npm "^4.0.0"
is-yarn-global "^0.3.0"
latest-version "^5.0.0"
pupa "^2.0.1"
semver-diff "^3.1.1"
xdg-basedir "^4.0.0"
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
@ -17435,6 +17835,13 @@ url-loader@^4.1.1:
mime-types "^2.1.27"
schema-utils "^3.0.0"
url-parse-lax@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
dependencies:
prepend-http "^2.0.0"
url-parse@^1.4.3, url-parse@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
@ -17699,7 +18106,7 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
wcwidth@^1.0.0:
wcwidth@^1.0.0, wcwidth@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
@ -18090,6 +18497,25 @@ workbox-cacheable-response@^6.1.5:
dependencies:
workbox-core "^6.1.5"
workbox-cli@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-cli/-/workbox-cli-6.1.5.tgz#4e14adb20aae5978a82b3fed0719fa3f19e62b59"
integrity sha512-1/sfzXOxdnfqUti9mQPfLhoPCiKX3fYo+NojMAdCAYGnyGreI81R6O/00H9EozQAQutlLFngsxNtnR+WtGSElg==
dependencies:
chalk "^4.1.0"
common-tags "^1.8.0"
fs-extra "^9.0.1"
glob "^7.1.6"
glob-watcher "^5.0.5"
inquirer "^7.3.3"
meow "^7.1.0"
ora "^5.0.0"
pretty-bytes "^5.3.0"
stringify-object "^3.3.0"
upath "^1.2.0"
update-notifier "^4.1.0"
workbox-build "^6.1.5"
workbox-core@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.1.5.tgz#424ff600e2c5448b14ebd58b2f5ac8ed91b73fb9"
@ -18174,18 +18600,6 @@ workbox-sw@^6.1.5:
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.1.5.tgz#06eb0c91f22e207422175b3f815cd2181c7074a0"
integrity sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg==
workbox-webpack-plugin@^6.1.1:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz#d573f959417c3dae49e112dae9c6b82cc1679229"
integrity sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg==
dependencies:
fast-json-stable-stringify "^2.1.0"
pretty-bytes "^5.4.1"
source-map-url "^0.4.0"
upath "^1.2.0"
webpack-sources "^1.4.3"
workbox-build "^6.1.5"
workbox-window@^6.1.1, workbox-window@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.1.5.tgz#017b22342e10c6df6b9672326b575ec950b6cd80"
@ -18317,6 +18731,11 @@ wsrun@^5.2.4:
throat "^4.1.0"
yargs "^13.0.0"
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
xml-name-validator@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
@ -18378,6 +18797,14 @@ yargs-parser@^15.0.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
yargs-parser@^18.1.3:
version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
dependencies:
camelcase "^5.0.0"
decamelize "^1.2.0"
yargs-parser@^20.2.3:
version "20.2.7"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a"