From f38a17c986e5ba61c1603ce477b767644893d458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Bure=C5=A1?= Date: Mon, 5 Aug 2019 08:40:32 +0200 Subject: [PATCH 01/14] fi_FI LABEL_THEMES_NAME propose ```fi_FI.SETTINGS_LABELS.LABEL_THEMES_NAME ``` suppose to be "Teemat", not emat. --- rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml b/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml index 02abf7106..9ab6d4be7 100644 --- a/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml +++ b/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml @@ -429,7 +429,7 @@ fi_FI: LABEL_TEMPLATES_NAME: "Mallipohjat" LABEL_SECURITY_NAME: "Turvallisuus" LABEL_SOCIAL_NAME: "Sosiaalinen" - LABEL_THEMES_NAME: "emat" + LABEL_THEMES_NAME: "Teemat" LABEL_CHANGE_PASSWORD_NAME: "Salasana" LABEL_OPEN_PGP_NAME: "OpenPGP" BUTTON_BACK: "Takaisin" From c4698134aea866930135b76638ae45de00677e6d Mon Sep 17 00:00:00 2001 From: Shurichan Date: Thu, 5 Sep 2019 13:37:28 +0300 Subject: [PATCH 02/14] Mispelling in fi_FI translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Empty list" description in empty folders is translated to a verb (empty, tyhjennä) instead of a adjective (empty, tyhjä). https://fi.glosbe.com/fi/en/tyhjent%C3%A4%C3%A4 (empty, verb) https://fi.glosbe.com/fi/en/tyhj%C3%A4 (empty, adjective) --- rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml b/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml index 02abf7106..6cddf4acc 100644 --- a/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml +++ b/rainloop/v/0.0.0/app/localization/webmail/fi_FI.yml @@ -85,7 +85,7 @@ fi_FI: MENU_SELECT_SEEN: "Luetut" MENU_SELECT_FLAGGED: "Merkityt" MENU_SELECT_UNFLAGGED: "Merkkaamattomat" - EMPTY_LIST: "Tyhjennä lista" + EMPTY_LIST: "Tyhjä lista" EMPTY_SEARCH_LIST: "Yhtään viestiä ei löytynyt ehdoillasi." SEARCH_RESULT_FOR: "Hakutulokset haulle \"%SEARCH%\"" BACK_TO_MESSAGE_LIST: "Takaisin viestilistaan" From 00c58b37d2a997c9f0af83ff2a389ac50a849453 Mon Sep 17 00:00:00 2001 From: Marc Date: Fri, 20 Sep 2019 11:29:04 +0200 Subject: [PATCH 03/14] Use DATE instead of ARRIVAL for sorting messages (Fixes #1817) --- rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index 2803d2198..2a8f7e85f 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -1865,7 +1865,7 @@ class MailClient if (!\is_array($aResultUids)) { $aResultUids = $bUseSortIfSupported ? - $this->oImapClient->MessageSimpleSort(array('REVERSE ARRIVAL'), $sSearchCriterias, true) : + $this->oImapClient->MessageSimpleSort(array('REVERSE DATE'), $sSearchCriterias, true) : $this->oImapClient->MessageSimpleSearch($sSearchCriterias, true, \MailSo\Base\Utils::IsAscii($sSearchCriterias) ? '' : 'UTF-8') ; From b77dcb5c12f77d33701555e00ad9ac602ffef046 Mon Sep 17 00:00:00 2001 From: Peter Linss Date: Tue, 19 Nov 2019 16:24:21 -0800 Subject: [PATCH 04/14] Switch admin password hashing to secure algorithms when available --- .../libraries/RainLoop/Config/Application.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php index c4316703b..f5c73e281 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -99,6 +99,9 @@ class Application extends \RainLoop\Config\AbstractConfig */ public function SetPassword($sPassword) { + if (function_exists('password_hash')) { + return $this->Set('security', 'admin_password', password_hash($sPassword, PASSWORD_DEFAULT)); + } return $this->Set('security', 'admin_password', \md5(APP_SALT.$sPassword.APP_SALT)); } @@ -112,8 +115,18 @@ class Application extends \RainLoop\Config\AbstractConfig $sPassword = (string) $sPassword; $sConfigPassword = (string) $this->Get('security', 'admin_password', ''); - return 0 < \strlen($sPassword) && - (($sPassword === $sConfigPassword && '12345' === $sConfigPassword) || \md5(APP_SALT.$sPassword.APP_SALT) === $sConfigPassword); + if (0 < strlen($sConfigPassword)) { + if (($sPassword === $sConfigPassword) && ('12345' === $sConfigPassword)) { + return true; + } + if (32 == strlen($sConfigPassword)) { // legacy md5 hash + return (\md5(APP_SALT.$sPassword.APP_SALT) === $sConfigPassword); + } + if (function_exists('password_verify')) { + return password_verify($sPassword, $sConfigPassword); + } + } + return false; } /** From a7f03d101ccbb85b231ff592d31e01dc78b93206 Mon Sep 17 00:00:00 2001 From: Peter Linss Date: Tue, 19 Nov 2019 16:48:40 -0800 Subject: [PATCH 05/14] Use cryptographically secure random number generator for APP_SALT when available --- rainloop/v/0.0.0/include.php | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/rainloop/v/0.0.0/include.php b/rainloop/v/0.0.0/include.php index 5b51731dd..26600d423 100644 --- a/rainloop/v/0.0.0/include.php +++ b/rainloop/v/0.0.0/include.php @@ -126,13 +126,22 @@ if (false === $sSalt) { - // random salt - $sSalt = '<'.'?php //' - .md5(microtime(true).rand(1000, 5000)) - .md5(microtime(true).rand(5000, 9999)) - .md5(microtime(true).rand(1000, 5000)); + if (function_exists('random_bytes')) + { // secure random salt + $sSalt = bin2hex(random_bytes(48)); + } + elseif (function_exists('openssl_random_pseudo_bytes')) + { // not-quite as secure random salt + $sSalt = bin2hex(openssl_random_pseudo_bytes(48)); + } + else + { // pseudo-random salt + $sSalt = md5(microtime(true).rand(1000, 5000)) + .md5(microtime(true).rand(5000, 9999)) + .md5(microtime(true).rand(1000, 5000)); + } - @file_put_contents(APP_DATA_FOLDER_PATH.'SALT.php', $sSalt); + @file_put_contents(APP_DATA_FOLDER_PATH.'SALT.php', '<'.'?php //'.$sSalt); } define('APP_SALT', md5($sSalt.APP_PRIVATE_DATA_NAME.$sSalt)); From e9892ceec375aa16306a2f86c90268180e7eac0c Mon Sep 17 00:00:00 2001 From: Peter Linss Date: Tue, 19 Nov 2019 16:51:12 -0800 Subject: [PATCH 06/14] adjust braces style to match surrounding code --- .../app/libraries/RainLoop/Config/Application.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php index f5c73e281..e3418a9c8 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -99,7 +99,8 @@ class Application extends \RainLoop\Config\AbstractConfig */ public function SetPassword($sPassword) { - if (function_exists('password_hash')) { + if (function_exists('password_hash')) + { return $this->Set('security', 'admin_password', password_hash($sPassword, PASSWORD_DEFAULT)); } return $this->Set('security', 'admin_password', \md5(APP_SALT.$sPassword.APP_SALT)); @@ -115,14 +116,18 @@ class Application extends \RainLoop\Config\AbstractConfig $sPassword = (string) $sPassword; $sConfigPassword = (string) $this->Get('security', 'admin_password', ''); - if (0 < strlen($sConfigPassword)) { - if (($sPassword === $sConfigPassword) && ('12345' === $sConfigPassword)) { + if (0 < strlen($sConfigPassword)) + { + if (($sPassword === $sConfigPassword) && ('12345' === $sConfigPassword)) // password has not been set + { return true; } - if (32 == strlen($sConfigPassword)) { // legacy md5 hash + if (32 == strlen($sConfigPassword)) // legacy md5 hash + { return (\md5(APP_SALT.$sPassword.APP_SALT) === $sConfigPassword); } - if (function_exists('password_verify')) { + if (function_exists('password_verify')) // secure hash + { return password_verify($sPassword, $sConfigPassword); } } From a54d40f2a2fae9305036220fdbcd8424d5bd588a Mon Sep 17 00:00:00 2001 From: Peter Linss Date: Wed, 20 Nov 2019 09:20:40 -0800 Subject: [PATCH 07/14] improve error handling for salt generation --- rainloop/v/0.0.0/include.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/rainloop/v/0.0.0/include.php b/rainloop/v/0.0.0/include.php index 26600d423..9d7fdc2e9 100644 --- a/rainloop/v/0.0.0/include.php +++ b/rainloop/v/0.0.0/include.php @@ -124,17 +124,23 @@ unset($sCheckName, $sCheckFilePath, $sCheckFolder, $sTest); } - if (false === $sSalt) - { + if (false === $sSalt) { if (function_exists('random_bytes')) { // secure random salt - $sSalt = bin2hex(random_bytes(48)); + try + { + $sSalt = bin2hex(random_bytes(48)); + } + catch (\Exception $oException) + { + $sSalt = false; + } } - elseif (function_exists('openssl_random_pseudo_bytes')) + if ((false === $sSalt) && (function_exists('openssl_random_pseudo_bytes'))) { // not-quite as secure random salt $sSalt = bin2hex(openssl_random_pseudo_bytes(48)); } - else + if (false === $sSalt) { // pseudo-random salt $sSalt = md5(microtime(true).rand(1000, 5000)) .md5(microtime(true).rand(5000, 9999)) From a250d8402544d5d3d37a0501e3e5b0854fc80bba Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Sun, 15 Mar 2020 22:15:36 +0300 Subject: [PATCH 08/14] Fix PHP 7.4 Deprecate message --- .../v/0.0.0/app/libraries/MailSo/Base/Utils.php | 14 +++++++------- .../v/0.0.0/app/libraries/MailSo/Mime/Email.php | 4 ++-- .../app/libraries/MailSo/Mime/EmailCollection.php | 6 +++--- .../v/0.0.0/app/libraries/MailSo/Mime/EmailDep.php | 4 ++-- .../libraries/MailSo/Sieve/ManageSieveClient.php | 2 +- .../app/libraries/MailSo/Vendors/Net/IDNA2.php | 8 ++++---- .../v/0.0.0/app/libraries/RainLoop/Actions.php | 6 +++--- .../v/0.0.0/app/libraries/lessphp/lessc.inc.php | 10 +++++----- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Base/Utils.php b/rainloop/v/0.0.0/app/libraries/MailSo/Base/Utils.php index 2a8b8ef6d..35ee65059 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Base/Utils.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Base/Utils.php @@ -700,7 +700,7 @@ END; { $iPos = \strpos($aTempArr[1], '?', 2); $aTempArr[0] = \substr($aTempArr[1], 2, $iPos - 2); - $sEncType = \strtoupper($aTempArr[1]{$iPos + 1}); + $sEncType = \strtoupper($aTempArr[1][$iPos + 1]); switch ($sEncType) { case 'Q': @@ -1986,13 +1986,13 @@ END; for ($iIndex = 0; $iLen > 0; $iIndex++, $iLen--) { - $sChar = $sStr{$iIndex}; + $sChar = $sStr[$iIndex]; if ($sChar == '&') { $iIndex++; $iLen--; - $sChar = isset($sStr{$iIndex}) ? $sStr{$iIndex} : null; + $sChar = isset($sStr[$iIndex]) ? $sStr[$iIndex] : null; if ($sChar === null) { break; @@ -2008,7 +2008,7 @@ END; $iK = 10; for (; $iLen > 0; $iIndex++, $iLen--) { - $sChar = $sStr{$iIndex}; + $sChar = $sStr[$iIndex]; $iB = $aArray[\ord($sChar)]; if ((\ord($sChar) & 0x80) || $iB == -1) @@ -2052,7 +2052,7 @@ END; if (($iCh || $iK < 6) || (!$iLen || $sChar != '-') || - ($iLen > 2 && '&' === $sStr{$iIndex+1} && '-' !== $sStr{$iIndex+2})) + ($iLen > 2 && '&' === $sStr[$iIndex+1] && '-' !== $sStr[$iIndex+2])) { return $bError; } @@ -2090,7 +2090,7 @@ END; while ($sLen) { - $iC = \ord($sStr{$iIndex}); + $iC = \ord($sStr[$iIndex]); if ($iC < 0x80) { $iCh = $iC; @@ -2140,7 +2140,7 @@ END; for ($iJ = 0; $iJ < $iN; $iJ++) { - $iO = \ord($sStr{$iIndex+$iJ}); + $iO = \ord($sStr[$iIndex+$iJ]); if (($iO & 0xc0) != 0x80) { return $bError; diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php index 9dd393f5d..f8f4b0dbf 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php @@ -102,11 +102,11 @@ class Email while ($iCurrentIndex < \strlen($sEmailAddress)) { - switch ($sEmailAddress{$iCurrentIndex}) + switch ($sEmailAddress[$iCurrentIndex]) { // case '\'': case '"': -// $sQuoteChar = $sEmailAddress{$iCurrentIndex}; +// $sQuoteChar = $sEmailAddress[$iCurrentIndex]; if ((!$bInName) && (!$bInAddress) && (!$bInComment)) { $bInName = true; diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailCollection.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailCollection.php index 53e5db391..3ab943af4 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailCollection.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailCollection.php @@ -156,16 +156,16 @@ class EmailCollection extends \MailSo\Base\Collection while ($iCurrentPos < $sWorkingRecipientsLen) { - switch ($sWorkingRecipients{$iCurrentPos}) + switch ($sWorkingRecipients[$iCurrentPos]) { case '\'': case '"': if (!$bIsInQuotes) { - $sChQuote = $sWorkingRecipients{$iCurrentPos}; + $sChQuote = $sWorkingRecipients[$iCurrentPos]; $bIsInQuotes = true; } - else if ($sChQuote == $sWorkingRecipients{$iCurrentPos}) + else if ($sChQuote == $sWorkingRecipients[$iCurrentPos]) { $bIsInQuotes = false; } diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailDep.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailDep.php index 64173bed3..6dea1c527 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailDep.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/EmailDep.php @@ -111,11 +111,11 @@ class EmailDep while ($iCurrentIndex < \strlen($sEmailAddress)) { - switch ($sEmailAddress{$iCurrentIndex}) + switch ($sEmailAddress[$iCurrentIndex]) { // case '\'': case '"': -// $sQuoteChar = $sEmailAddress{$iCurrentIndex}; +// $sQuoteChar = $sEmailAddress[$iCurrentIndex]; if ((!$bInName) && (!$bInAddress) && (!$bInComment)) { $bInName = true; diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php index cd4e17982..f715a312b 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php @@ -325,7 +325,7 @@ class ManageSieveClient extends \MailSo\Net\NetClient $sScript = ''; if (\is_array($mResponse) && 0 < \count($mResponse)) { - if ('{' === $mResponse[0]{0}) + if ('{' === $mResponse[0][0]) { \array_shift($mResponse); } diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Vendors/Net/IDNA2.php b/rainloop/v/0.0.0/app/libraries/MailSo/Vendors/Net/IDNA2.php index 820683411..c3dc298f2 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Vendors/Net/IDNA2.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Vendors/Net/IDNA2.php @@ -2687,7 +2687,7 @@ class Net_IDNA2 if ($delim_pos > self::_byteLength($this->_punycode_prefix)) { for ($k = self::_byteLength($this->_punycode_prefix); $k < $delim_pos; ++$k) { - $decoded[] = ord($encoded{$k}); + $decoded[] = ord($encoded[$k]); } } else { $decoded = array(); @@ -2704,7 +2704,7 @@ class Net_IDNA2 for ($enco_idx = ($delim_pos)? ($delim_pos + 1) : 0; $enco_idx < $enco_len; ++$deco_len) { for ($old_idx = $idx, $w = 1, $k = $this->_base; 1 ; $k += $this->_base) { - $digit = $this->_decodeDigit($encoded{$enco_idx++}); + $digit = $this->_decodeDigit($encoded[$enco_idx++]); $idx += $digit * $w; $t = ($k <= $bias) ? @@ -3116,7 +3116,7 @@ class Net_IDNA2 $mode = 'next'; $test = 'none'; for ($k = 0; $k < $inp_len; ++$k) { - $v = ord($input{$k}); // Extract byte from input string + $v = ord($input[$k]); // Extract byte from input string if ($v < 128) { // We found an ASCII char - put into stirng as is $output[$out_len] = $v; @@ -3283,7 +3283,7 @@ class Net_IDNA2 $out_len++; $output[$out_len] = 0; } - $output[$out_len] += ord($input{$i}) << (8 * (3 - ($i % 4) ) ); + $output[$out_len] += ord($input[$i]) << (8 * (3 - ($i % 4) ) ); } return $output; } diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php index 4af4cdb87..9f7341ee4 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -9260,7 +9260,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack { while (($sFile = \readdir($rDirH)) !== false) { - if ('.' !== $sFile{0} && \is_dir($sDir.'/'.$sFile) && \file_exists($sDir.'/'.$sFile.'/styles.less')) + if ('.' !== $sFile[0] && \is_dir($sDir.'/'.$sFile) && \file_exists($sDir.'/'.$sFile.'/styles.less')) { if ('Default' === $sFile) { @@ -9288,7 +9288,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack { while (($sFile = \readdir($rDirH)) !== false) { - if ('.' !== $sFile{0} && \is_dir($sDir.'/'.$sFile) && \file_exists($sDir.'/'.$sFile.'/styles.less')) + if ('.' !== $sFile[0] && \is_dir($sDir.'/'.$sFile) && \file_exists($sDir.'/'.$sFile.'/styles.less')) { $sList[] = $sFile.'@custom'; } @@ -9341,7 +9341,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack { while (($sFile = \readdir($rDirH)) !== false) { - if ('.' !== $sFile{0} && \is_file($sDir.'/'.$sFile) && '.yml' === \substr($sFile, -4)) + if ('.' !== $sFile[0] && \is_file($sDir.'/'.$sFile) && '.yml' === \substr($sFile, -4)) { $sLang = \substr($sFile, 0, -4); if (0 < \strlen($sLang) && 'always' !== $sLang && '_source.en' !== $sLang) diff --git a/rainloop/v/0.0.0/app/libraries/lessphp/lessc.inc.php b/rainloop/v/0.0.0/app/libraries/lessphp/lessc.inc.php index 3a185030d..22706e724 100644 --- a/rainloop/v/0.0.0/app/libraries/lessphp/lessc.inc.php +++ b/rainloop/v/0.0.0/app/libraries/lessphp/lessc.inc.php @@ -659,7 +659,7 @@ class lessc { if ($suffix !== null && $subProp[0] == "assign" && is_string($subProp[1]) && - $subProp[1]{0} != $this->vPrefix) + $subProp[1][0] != $this->vPrefix) { $subProp[2] = array( 'list', ' ', @@ -1626,7 +1626,7 @@ class lessc { $this->pushEnv(); $parser = new lessc_parser($this, __METHOD__); foreach ($args as $name => $strValue) { - if ($name{0} != '@') $name = '@'.$name; + if ($name[0] != '@') $name = '@'.$name; $parser->count = 0; $parser->buffer = (string)$strValue; if (!$parser->propertyValue($value)) { @@ -2284,7 +2284,7 @@ class lessc_parser { $hidden = true; if (!isset($block->args)) { foreach ($block->tags as $tag) { - if (!is_string($tag) || $tag{0} != $this->lessc->mPrefix) { + if (!is_string($tag) || $tag[0] != $this->lessc->mPrefix) { $hidden = false; break; } @@ -2338,7 +2338,7 @@ class lessc_parser { protected function fixTags($tags) { // move @ tags out of variable namespace foreach ($tags as &$tag) { - if ($tag{0} == $this->lessc->vPrefix) + if ($tag[0] == $this->lessc->vPrefix) $tag[0] = $this->lessc->mPrefix; } return $tags; @@ -3068,7 +3068,7 @@ class lessc_parser { protected function end() { if ($this->literal(';')) { return true; - } elseif ($this->count == strlen($this->buffer) || $this->buffer{$this->count} == '}') { + } elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') { // if there is end of file or a closing block next then we don't need a ; return true; } From 151646f9907c8de1c5572256e4c59f2a2b046dd9 Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Sun, 15 Mar 2020 23:14:52 +0300 Subject: [PATCH 09/14] Improve resource loaders --- dev/Common/Booter.js | 33 +++++----- dev/bootstrap.js | 19 +++--- .../0.0.0/app/libraries/RainLoop/Actions.php | 4 +- .../0.0.0/app/libraries/RainLoop/Service.php | 2 +- .../app/libraries/RainLoop/ServiceActions.php | 2 +- rainloop/v/0.0.0/app/templates/Index.html | 62 ++++++++++--------- 6 files changed, 66 insertions(+), 56 deletions(-) diff --git a/dev/Common/Booter.js b/dev/Common/Booter.js index f3ca0a320..76abd5929 100644 --- a/dev/Common/Booter.js +++ b/dev/Common/Booter.js @@ -66,7 +66,17 @@ function getComputedStyle(id, name) { * @returns {void} */ function includeStyle(styles) { - window.document.write(unescape('%3Csty' + 'le%3E' + styles + '"%3E%3C/' + 'sty' + 'le%3E')); // eslint-disable-line no-useless-concat + const style = window.document.createElement('style'); + style.type = 'text/css'; + style.text = styles; + + if (style.styleSheet) { + style.styleSheet.cssText = styles; + } else { + style.appendChild(window.document.createTextNode(styles)); + } + + window.document.getElementsByTagName('head')[0].appendChild(style); } /** @@ -74,19 +84,11 @@ function includeStyle(styles) { * @returns {void} */ function includeScr(src) { - window.document.write( - unescape( - '%3Csc' + - 'ript type="text/jav' + - 'ascr' + - 'ipt" data-cfasync="false" sr' + - 'c="' + - src + - '"%3E%3C/' + - 'scr' + - 'ipt%3E' - ) - ); // eslint-disable-line no-useless-concat + const script = window.document.createElement('script'); + script.type = 'text/javascript'; + script.src = src; + + window.document.getElementsByTagName('head')[0].appendChild(script); } /** @@ -217,7 +219,6 @@ function runApp() { jassl && progressJs && appData && - appData.TemplatesLink && appData.LangLink && appData.StaticLibJsLink && appData.StaticAppJsLink && @@ -250,7 +251,7 @@ function runApp() { libs() .then(() => { p.set(20); - return window.Promise.all([jassl(appData.TemplatesLink), jassl(appData.LangLink)]); + return jassl(appData.LangLink); }) .then(() => { p.set(30); diff --git a/dev/bootstrap.js b/dev/bootstrap.js index 5106eeb5d..af0f1506c 100644 --- a/dev/bootstrap.js +++ b/dev/bootstrap.js @@ -33,17 +33,22 @@ export default (App) => { window.rl = rl; + const start = () => { + window.setTimeout(() => { + $html.removeClass('no-js rl-booted-trigger').addClass('rl-booted'); + + App.bootstart(); + }, Enums.Magics.Time10ms); + }; + window.__APP_BOOT = (fErrorCallback) => { domReady(() => { window.setTimeout(() => { - if (window.rainloopTEMPLATES && window.rainloopTEMPLATES[0]) { + if (window.document.getElementById('rainloop-templates-id')) { + start(); + } else if (window.rainloopTEMPLATES && window.rainloopTEMPLATES[0]) { window.document.getElementById('rl-templates').innerHTML = window.rainloopTEMPLATES[0]; - - window.setTimeout(() => { - $html.removeClass('no-js rl-booted-trigger').addClass('rl-booted'); - - App.bootstart(); - }, Enums.Magics.Time10ms); + start(); } else { fErrorCallback(); } diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php index 9f7341ee4..bbf181b90 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -1525,7 +1525,7 @@ class Actions /* required by Index.html and rl.js: -NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBackground PluginsLink AuthAccountHash +NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground PluginsLink AuthAccountHash */ $aResult = array( @@ -1973,7 +1973,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack $aResult['LangLink'] = './?/Lang/0/'.($bAdmin ? 'Admin' : 'App').'/'. ($bAdmin ? $aResult['LanguageAdmin'] : $aResult['Language']).'/'.$sStaticCache.'/'; - $aResult['TemplatesLink'] = './?/Templates/0/'.($bAdmin ? 'Admin' : 'App').'/'.$sStaticCache.'/'; + // $aResult['TemplatesLink'] = './?/Templates/0/'.($bAdmin ? 'Admin' : 'App').'/'.$sStaticCache.'/'; $bAppJsDebug = !!$this->Config()->Get('labs', 'use_app_debug_js', false); diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php index 9d80121a1..8fffce1b6 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php @@ -213,7 +213,7 @@ class Service if (0 === \strlen($sResult)) { -// $aTemplateParameters['{{BaseTemplates}}'] = $this->oServiceActions->compileTemplates($bAdmin, false); + $aTemplateParameters['{{BaseTemplates}}'] = $this->oServiceActions->compileTemplates($bAdmin, false); $sResult = \strtr(\file_get_contents(APP_VERSION_ROOT_PATH.'app/templates/Index.html'), $aTemplateParameters); $sResult = \RainLoop\Utils::ClearHtmlOutput($sResult); diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php index 873934e81..4d8311bcd 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/ServiceActions.php @@ -1302,7 +1302,7 @@ class ServiceActions $this->oActions->Plugins()->CompileTemplate($aTemplates, $bAdmin); - $sHtml = ''; + $sHtml = ''; foreach ($aTemplates as $sName => $sFile) { $sName = \preg_replace('/[^a-zA-Z0-9]/', '', $sName); diff --git a/rainloop/v/0.0.0/app/templates/Index.html b/rainloop/v/0.0.0/app/templates/Index.html index 1a3d7d2b5..dbfe75077 100644 --- a/rainloop/v/0.0.0/app/templates/Index.html +++ b/rainloop/v/0.0.0/app/templates/Index.html @@ -1,33 +1,37 @@ - - - - - - - - - - - - {{BaseContentSecurityPolicy}} - - {{BaseAppHeadScriptLink}} - {{BaseAppFaviconPngLinkTag}} - {{BaseAppFaviconTouchLinkTag}} - - - - - -
-
- {{BaseAppBodyScript}} - - - + + + + + + + + + {{BaseContentSecurityPolicy}} + + {{BaseAppHeadScriptLink}} + {{BaseAppFaviconPngLinkTag}} + {{BaseAppFaviconTouchLinkTag}} + + + + + + +
+
+ {{BaseTemplates}} + {{BaseAppBodyScript}} + + + + \ No newline at end of file From e744100919a04dc7fb043486b660b41a34d2eadc Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Sun, 15 Mar 2020 23:38:46 +0300 Subject: [PATCH 10/14] Improve templates --- .../templates/Views/Admin/AdminSettingsContacts.html | 2 +- .../Views/Admin/AdminSettingsPluginProperty.html | 2 +- .../templates/Views/Admin/AdminSettingsSecurity.html | 8 ++++---- .../0.0.0/app/templates/Views/User/PopupsAccount.html | 2 +- .../templates/Views/User/PopupsComposeOpenPgp.html | 2 +- .../templates/Views/User/PopupsMessageOpenPgp.html | 2 +- .../app/templates/Views/User/PopupsNewOpenPgpKey.html | 2 +- .../templates/Views/User/SettingsChangePassword.html | 6 +++--- .../app/templates/Views/User/SettingsContacts.html | 11 +++++------ 9 files changed, 18 insertions(+), 19 deletions(-) diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html index a6bac5d5d..92693b68c 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html @@ -65,7 +65,7 @@ pgsql:host=127.0.0.1;port=5432;dbname=rainloop
-
diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPluginProperty.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPluginProperty.html index f245ecf6e..913919d3a 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPluginProperty.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPluginProperty.html @@ -8,7 +8,7 @@ data-bind="value: value, attr: {placeholder: placeholder}" /> - diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSecurity.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSecurity.html index fb6e1ca46..d25bb6650 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSecurity.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSecurity.html @@ -78,7 +78,7 @@
-
@@ -86,21 +86,21 @@
-
-
-
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/PopupsAccount.html b/rainloop/v/0.0.0/app/templates/Views/User/PopupsAccount.html index 8cc8c3876..3827149d0 100644 --- a/rainloop/v/0.0.0/app/templates/Views/User/PopupsAccount.html +++ b/rainloop/v/0.0.0/app/templates/Views/User/PopupsAccount.html @@ -30,7 +30,7 @@
-
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/PopupsComposeOpenPgp.html b/rainloop/v/0.0.0/app/templates/Views/User/PopupsComposeOpenPgp.html index 49c65a51e..8cedd3648 100644 --- a/rainloop/v/0.0.0/app/templates/Views/User/PopupsComposeOpenPgp.html +++ b/rainloop/v/0.0.0/app/templates/Views/User/PopupsComposeOpenPgp.html @@ -85,7 +85,7 @@
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/PopupsMessageOpenPgp.html b/rainloop/v/0.0.0/app/templates/Views/User/PopupsMessageOpenPgp.html index 41b5b2eaa..abca830d9 100644 --- a/rainloop/v/0.0.0/app/templates/Views/User/PopupsMessageOpenPgp.html +++ b/rainloop/v/0.0.0/app/templates/Views/User/PopupsMessageOpenPgp.html @@ -36,7 +36,7 @@
-
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/PopupsNewOpenPgpKey.html b/rainloop/v/0.0.0/app/templates/Views/User/PopupsNewOpenPgpKey.html index f377f1282..a492b392b 100644 --- a/rainloop/v/0.0.0/app/templates/Views/User/PopupsNewOpenPgpKey.html +++ b/rainloop/v/0.0.0/app/templates/Views/User/PopupsNewOpenPgpKey.html @@ -34,7 +34,7 @@
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/SettingsChangePassword.html b/rainloop/v/0.0.0/app/templates/Views/User/SettingsChangePassword.html index 810e3c4d3..f0d08fe22 100644 --- a/rainloop/v/0.0.0/app/templates/Views/User/SettingsChangePassword.html +++ b/rainloop/v/0.0.0/app/templates/Views/User/SettingsChangePassword.html @@ -10,7 +10,7 @@
-
@@ -19,7 +19,7 @@
-
@@ -28,7 +28,7 @@
-
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/SettingsContacts.html b/rainloop/v/0.0.0/app/templates/Views/User/SettingsContacts.html index 7ace99ae4..fd2e3f9a8 100644 --- a/rainloop/v/0.0.0/app/templates/Views/User/SettingsContacts.html +++ b/rainloop/v/0.0.0/app/templates/Views/User/SettingsContacts.html @@ -36,9 +36,8 @@
- +
@@ -55,10 +54,10 @@
- +
- + \ No newline at end of file From 5e409ac638afb67cb9866d298783f9b4da0bf9fb Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Sun, 15 Mar 2020 23:56:47 +0300 Subject: [PATCH 11/14] Update dependencies --- package.json | 18 +-- yarn.lock | 341 +++++++++++++++++++++++++++------------------------ 2 files changed, 192 insertions(+), 167 deletions(-) diff --git a/package.json b/package.json index 3b696bc2e..69f0a8698 100644 --- a/package.json +++ b/package.json @@ -47,14 +47,14 @@ ], "readmeFilename": "README.md", "devDependencies": { - "@babel/core": "7.8.4", + "@babel/core": "7.8.7", "@babel/plugin-proposal-class-properties": "7.8.3", "@babel/plugin-proposal-decorators": "7.8.3", "@babel/plugin-transform-runtime": "7.8.3", - "@babel/preset-env": "7.8.4", - "@babel/runtime-corejs3": "7.8.4", - "autolinker": "3.11.1", - "babel-eslint": "10.0.3", + "@babel/preset-env": "7.8.7", + "@babel/runtime-corejs3": "7.8.7", + "autolinker": "3.13.0", + "babel-eslint": "10.1.0", "babel-loader": "8.0.6", "classnames": "2.2.6", "copy-webpack-plugin": "5.1.1", @@ -69,7 +69,7 @@ "gulp-autoprefixer": "7.0.1", "gulp-cached": "1.1.1", "gulp-chmod": "3.0.0", - "gulp-clean-css": "4.2.0", + "gulp-clean-css": "4.3.0", "gulp-concat-util": "0.5.5", "gulp-eol": "0.2.0", "gulp-eslint": "6.0.0", @@ -113,11 +113,11 @@ "prettier": "1.19.1", "raf": "3.4.1", "raw-loader": "4.0.0", - "rimraf": "3.0.1", + "rimraf": "3.0.2", "simplestatemanager": "4.1.1", "style-loader": "1.1.3", "underscore": "1.9.2", - "webpack": "4.41.5", - "webpack-cli": "3.3.10" + "webpack": "4.42.0", + "webpack-cli": "3.3.11" } } diff --git a/yarn.lock b/yarn.lock index 76dbedc3d..5e168d95c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,27 +15,27 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.4.tgz#bbe65d05a291667a8394fe8a0e0e277ef22b0d2a" - integrity sha512-lHLhlsvFjJAqNU71b7k6Vv9ewjmTXKvqaMv7n0G1etdCabWLw3nEYE8mmgoVOxMIFE07xOvo7H7XBASirX6Rrg== +"@babel/compat-data@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" + integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== dependencies: browserslist "^4.8.5" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== +"@babel/core@7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.7" "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -45,16 +45,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.2.2": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.0.tgz#f663838cd7b542366de3aa608a657b8ccb2a99eb" - dependencies: - "@babel/types" "^7.3.0" - jsesc "^2.5.1" - lodash "^4.17.10" - source-map "^0.5.0" - trim-right "^1.0.1" - "@babel/generator@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" @@ -65,6 +55,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== + dependencies: + "@babel/types" "^7.8.7" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -80,22 +80,22 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" - integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" -"@babel/helper-compilation-targets@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz#03d7ecd454b7ebe19a254f76617e61770aed2c88" - integrity sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg== +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== dependencies: - "@babel/compat-data" "^7.8.4" - browserslist "^4.8.5" + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" @@ -137,14 +137,6 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -154,12 +146,6 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - dependencies: - "@babel/types" "^7.0.0" - "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -240,6 +226,16 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + "@babel/helper-simple-access@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" @@ -248,12 +244,6 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-split-export-declaration@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" - dependencies: - "@babel/types" "^7.0.0" - "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -297,9 +287,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": - version "7.3.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.1.tgz#8f4ffd45f779e6132780835ffa7a215fa0b2d181" +"@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": version "7.8.4" @@ -482,17 +473,17 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" - integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== +"@babel/plugin-transform-classes@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" "@babel/helper-function-name" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" @@ -533,10 +524,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" - integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== +"@babel/plugin-transform-for-of@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -621,12 +612,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" - integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== +"@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== dependencies: - "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -637,12 +628,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" - integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== dependencies: - regenerator-transform "^0.14.0" + regenerator-transform "^0.14.2" "@babel/plugin-transform-reserved-words@^7.8.3": version "7.8.3" @@ -706,13 +697,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" - integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== +"@babel/preset-env@7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" + integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== dependencies: - "@babel/compat-data" "^7.8.4" - "@babel/helper-compilation-targets" "^7.8.4" + "@babel/compat-data" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-proposal-async-generator-functions" "^7.8.3" @@ -735,13 +726,13 @@ "@babel/plugin-transform-async-to-generator" "^7.8.3" "@babel/plugin-transform-block-scoped-functions" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.6" "@babel/plugin-transform-computed-properties" "^7.8.3" "@babel/plugin-transform-destructuring" "^7.8.3" "@babel/plugin-transform-dotall-regex" "^7.8.3" "@babel/plugin-transform-duplicate-keys" "^7.8.3" "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-for-of" "^7.8.6" "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" @@ -752,9 +743,9 @@ "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-parameters" "^7.8.7" "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" "@babel/plugin-transform-reserved-words" "^7.8.3" "@babel/plugin-transform-shorthand-properties" "^7.8.3" "@babel/plugin-transform-spread" "^7.8.3" @@ -762,28 +753,27 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" browserslist "^4.8.5" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" -"@babel/runtime-corejs3@7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.4.tgz#ccc4e042e2fae419c67fa709567e5d2179ed3940" - integrity sha512-+wpLqy5+fbQhvbllvlJEVRIpYj+COUWnnsm+I4jZlA8Lo7/MJmBhGTCHyk1/RWfOqBRJ2MbadddG6QltTKTlrg== +"@babel/runtime-corejs3@7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" + integrity sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q== dependencies: core-js-pure "^3.0.0" - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" -"@babel/template@^7.1.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" +"@babel/runtime@^7.8.4": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.2.2" - "@babel/types" "^7.2.2" + regenerator-runtime "^0.13.4" "@babel/template@^7.8.3": version "7.8.3" @@ -794,19 +784,29 @@ "@babel/parser" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/traverse@^7.0.0": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" +"@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.2.3" - "@babel/types" "^7.2.2" + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.7.0", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.10" + lodash "^4.17.13" "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": version "7.8.4" @@ -823,12 +823,13 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.0.tgz#61dc0b336a93badc02bf5f69c4cd8e1353f2ffc0" +"@babel/types@^7.7.0", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== dependencies: esutils "^2.0.2" - lodash "^4.17.10" + lodash "^4.17.13" to-fast-properties "^2.0.0" "@babel/types@^7.8.3": @@ -1395,10 +1396,10 @@ atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" -autolinker@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-3.11.1.tgz#aa4f910371df091b0d714d8d6e700d53f357ce95" - integrity sha512-6sAmetStorjXvwmV8MBxI5DGICHKD1B5EjdkIrq34X6YBDN6jj54EUHnoHgNqmNCclcf8c409zuVMNy449u80g== +autolinker@3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-3.13.0.tgz#7a51244bb11bf75de89a48047919e93071e78f43" + integrity sha512-qlM0Su9lYYJ7lAth6xxB0rRdpS4FGmRboaghmM45Ud6ygGZa/TK/cbRAX6afvusJ79vyciy18QSKrWTM6cJHiw== dependencies: tslib "^1.9.3" @@ -1423,15 +1424,15 @@ aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" -babel-eslint@10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" - integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" eslint-visitor-keys "^1.0.0" resolve "^1.12.0" @@ -1643,6 +1644,15 @@ browserslist@^4.8.3, browserslist@^4.8.5: electron-to-chromium "^1.3.341" node-releases "^1.1.47" +browserslist@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" + integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== + dependencies: + caniuse-lite "^1.0.30001030" + electron-to-chromium "^1.3.363" + node-releases "^1.1.50" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -1743,6 +1753,11 @@ caniuse-lite@^1.0.30001023: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== +caniuse-lite@^1.0.30001030: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1845,9 +1860,10 @@ classnames@2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" -clean-css@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" +clean-css@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" @@ -2415,6 +2431,11 @@ electron-to-chromium@^1.3.341: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz#f1397a633c35e726730c24be1084cd25c3ee8148" integrity sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw== +electron-to-chromium@^1.3.363: + version "1.3.376" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz#7cb7b5205564a06c8f8ecfbe832cbd47a1224bb1" + integrity sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw== + element-dataset@2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/element-dataset/-/element-dataset-2.2.6.tgz#a4e46dbb3ee991e8c7d5366ec654f87670c2ef80" @@ -3283,12 +3304,12 @@ gulp-chmod@3.0.0: stat-mode "^0.3.0" through2 "^3.0.1" -gulp-clean-css@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.2.0.tgz#915ec258dc6d3e6a50043f610066d5c2eac4f54e" - integrity sha512-r4zQsSOAK2UYUL/ipkAVCTRg/2CLZ2A+oPVORopBximRksJ6qy3EX1KGrIWT4ZrHxz3Hlobb1yyJtqiut7DNjA== +gulp-clean-css@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz#5b1e73f2fca46703eb636014cdd4553cea65146d" + integrity sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg== dependencies: - clean-css "4.2.1" + clean-css "4.2.3" plugin-error "1.0.1" through2 "3.0.1" vinyl-sourcemaps-apply "0.2.1" @@ -4497,7 +4518,7 @@ lodash.uniq@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.17.10, lodash@^4.17.11: +lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -4969,6 +4990,13 @@ node-releases@^1.1.47: dependencies: semver "^6.3.0" +node-releases@^1.1.50: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -5551,7 +5579,7 @@ pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" -private@^0.1.6: +private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -5789,17 +5817,18 @@ regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== +regenerator-transform@^0.14.2: + version "0.14.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.3.tgz#54aebff2ef58c0ae61e695ad1b9a9d65995fff78" + integrity sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" + private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -6016,10 +6045,10 @@ rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.1.tgz#48d3d4cb46c80d388ab26cd61b1b466ae9ae225a" - integrity sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw== +rimraf@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -6742,10 +6771,6 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - tslib@^1.9.0, tslib@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -7059,10 +7084,10 @@ watchpack@^1.6.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -webpack-cli@3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" - integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== +webpack-cli@3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" + integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== dependencies: chalk "2.4.2" cross-spawn "6.0.5" @@ -7091,10 +7116,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.41.5: - version "4.41.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" - integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" From 2266affa5b474c2258565ace8b20a40d6ea30f64 Mon Sep 17 00:00:00 2001 From: djmaze Date: Fri, 20 Mar 2020 16:14:36 +0100 Subject: [PATCH 12/14] Add support for PECL xxtea --- rainloop/v/0.0.0/app/libraries/MailSo/Base/Crypt.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Base/Crypt.php b/rainloop/v/0.0.0/app/libraries/MailSo/Base/Crypt.php index f21bdbca9..152a0c902 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Base/Crypt.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Base/Crypt.php @@ -31,6 +31,10 @@ class Crypt return ''; } + if (\is_callable('xxtea_encrypt')) { + return xxtea_encrypt($sString, $sKey); + } + $aV = self::str2long($sString, true); $aK = self::str2long($sKey, false); if (\count($aK) < 4) @@ -80,6 +84,10 @@ class Crypt return ''; } + if (\is_callable('xxtea_decrypt')) { + return xxtea_decrypt($sEncriptedString, $sKey); + } + $aV = self::str2long($sEncriptedString, false); $aK = self::str2long($sKey, false); @@ -186,4 +194,4 @@ class Crypt } return (int) $iN; } -} \ No newline at end of file +} From a8100d34f88fbe347bf90b72d76836bf387caf6b Mon Sep 17 00:00:00 2001 From: djmaze Date: Fri, 20 Mar 2020 16:26:42 +0100 Subject: [PATCH 13/14] Use gulp-terser instead of gulp-uglify for ES2015 --- package.json | 4 +++- tasks/js.js | 8 +++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3b696bc2e..2c04aa351 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,6 @@ "gulp-sourcemaps": "2.6.5", "gulp-stripbom": "1.0.5", "gulp-through": "0.4.0", - "gulp-uglify": "3.0.2", "gulp-util": "3.0.8", "gulp-zip": "5.0.1", "ifvisible.js": "1.0.6", @@ -119,5 +118,8 @@ "underscore": "1.9.2", "webpack": "4.41.5", "webpack-cli": "3.3.10" + }, + "dependencies": { + "gulp-terser": "^1.2.0" } } diff --git a/tasks/js.js b/tasks/js.js index 0258ad2fc..a7c46bad7 100644 --- a/tasks/js.js +++ b/tasks/js.js @@ -5,7 +5,7 @@ const concat = require('gulp-concat-util'), header = require('gulp-header'), rename = require('gulp-rename'), replace = require('gulp-replace'), - uglify = require('gulp-uglify'), + terser = require('gulp-terser'), plumber = require('gulp-plumber'), gulpif = require('gulp-if'), eol = require('gulp-eol'), @@ -65,10 +65,8 @@ const jsMin = () => .pipe(replace(/"rainloop\/v\/([^/]+)\/static\/js\/"/g, '"rainloop/v/$1/static/js/min/"')) .pipe(rename({ suffix: '.min' })) .pipe( - uglify({ - mangle: true, - compress: true, - ie8: false + terser({ + output: {comments: false} }) ) .pipe(eol('\n', true)) From 796183d40d6ac9dfe488c57d8b127720a61d310a Mon Sep 17 00:00:00 2001 From: Javyer Date: Fri, 3 Apr 2020 00:34:03 +0200 Subject: [PATCH 14/14] Comply with Owncloud 10.3.2 --- build/owncloud/rainloop-app/admin.php | 4 +++- build/owncloud/rainloop-app/ajax/admin.php | 4 ++-- build/owncloud/rainloop-app/ajax/personal.php | 6 +++--- build/owncloud/rainloop-app/app.php | 8 ++++---- build/owncloud/rainloop-app/appinfo/app.php | 2 +- build/owncloud/rainloop-app/appinfo/info.xml | 2 +- build/owncloud/rainloop-app/lib/RainLoopHelper.php | 8 ++++---- build/owncloud/rainloop-app/personal.php | 6 +++--- 8 files changed, 21 insertions(+), 19 deletions(-) diff --git a/build/owncloud/rainloop-app/admin.php b/build/owncloud/rainloop-app/admin.php index 492e848cf..e57c6297f 100644 --- a/build/owncloud/rainloop-app/admin.php +++ b/build/owncloud/rainloop-app/admin.php @@ -12,7 +12,9 @@ OCP\User::checkAdminUser(); OCP\Util::addScript('rainloop', 'admin'); +include_once OC_App::getAppPath('rainloop').'/lib/RainLoopHelper.php'; + $oTemplate = new OCP\Template('rainloop', 'admin-local'); $oTemplate->assign('rainloop-admin-panel-link', OC_RainLoop_Helper::getAppUrl().'?admin'); -$oTemplate->assign('rainloop-autologin', OCP\Config::getAppValue('rainloop', 'rainloop-autologin', false)); +$oTemplate->assign('rainloop-autologin', \OC::$server->getConfig()->getAppValue('rainloop', 'rainloop-autologin', false)); return $oTemplate->fetchPage(); diff --git a/build/owncloud/rainloop-app/ajax/admin.php b/build/owncloud/rainloop-app/ajax/admin.php index a8343c23f..2c277ad0d 100644 --- a/build/owncloud/rainloop-app/ajax/admin.php +++ b/build/owncloud/rainloop-app/ajax/admin.php @@ -18,10 +18,10 @@ $bAutologin = false; if (isset($_POST['appname']) && 'rainloop' === $_POST['appname']) { - OCP\Config::setAppValue('rainloop', 'rainloop-autologin', isset($_POST['rainloop-autologin']) ? + \OC::$server->getConfig()->setAppValue('rainloop', 'rainloop-autologin', isset($_POST['rainloop-autologin']) ? '1' === $_POST['rainloop-autologin'] : false); - $bAutologin = OCP\Config::getAppValue('rainloop', 'rainloop-autologin', false); + $bAutologin = \OC::$server->getConfig()->getAppValue('rainloop', 'rainloop-autologin', false); } else { diff --git a/build/owncloud/rainloop-app/ajax/personal.php b/build/owncloud/rainloop-app/ajax/personal.php index 02252b750..11f6fbe75 100644 --- a/build/owncloud/rainloop-app/ajax/personal.php +++ b/build/owncloud/rainloop-app/ajax/personal.php @@ -21,18 +21,18 @@ if (isset($_POST['appname'], $_POST['rainloop-password'], $_POST['rainloop-email $sPostEmail = $_POST['rainloop-email']; - OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-email', $sPostEmail); + \OC::$server->getConfig()->setUserValue($sUser, 'rainloop', 'rainloop-email', $sPostEmail); $sPass = $_POST['rainloop-password']; if ('******' !== $sPass && '' !== $sPass) { include_once OC_App::getAppPath('rainloop').'/lib/RainLoopHelper.php'; - OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-password', + \OC::$server->getConfig()->setUserValue($sUser, 'rainloop', 'rainloop-password', OC_RainLoop_Helper::encodePassword($sPass, md5($sPostEmail))); } - $sEmail = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-email', ''); + $sEmail = \OC::$server->getConfig()->getUserValue($sUser, 'rainloop', 'rainloop-email', ''); } else { diff --git a/build/owncloud/rainloop-app/app.php b/build/owncloud/rainloop-app/app.php index 94569d475..2699b4017 100644 --- a/build/owncloud/rainloop-app/app.php +++ b/build/owncloud/rainloop-app/app.php @@ -15,15 +15,15 @@ if (@file_exists(__DIR__.'/app/index.php')) $sUser = OCP\User::getUser(); - if (OCP\Config::getAppValue('rainloop', 'rainloop-autologin', false)) + if (\OC::$server->getConfig()->getAppValue('rainloop', 'rainloop-autologin', false)) { $sEmail = $sUser; - $sEncodedPassword = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-autologin-password', ''); + $sEncodedPassword = \OC::$server->getConfig()->getUserValue($sUser, 'rainloop', 'rainloop-autologin-password', ''); } else { - $sEmail = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-email', ''); - $sEncodedPassword = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-password', ''); + $sEmail = \OC::$server->getConfig()->getUserValue($sUser, 'rainloop', 'rainloop-email', ''); + $sEncodedPassword = \OC::$server->getConfig()->getUserValue($sUser, 'rainloop', 'rainloop-password', ''); } $sDecodedPassword = OC_RainLoop_Helper::decodePassword($sEncodedPassword, md5($sEmail)); diff --git a/build/owncloud/rainloop-app/appinfo/app.php b/build/owncloud/rainloop-app/appinfo/app.php index 3f3b87d76..254d10992 100644 --- a/build/owncloud/rainloop-app/appinfo/app.php +++ b/build/owncloud/rainloop-app/appinfo/app.php @@ -13,7 +13,7 @@ OC::$CLASSPATH['OC_RainLoop_Helper'] = OC_App::getAppPath('rainloop') . '/lib/Ra OCP\App::registerAdmin('rainloop', 'admin'); OCP\App::registerPersonal('rainloop', 'personal'); -if (OCP\Config::getAppValue('rainloop', 'rainloop-autologin', false)) +if (\OC::$server->getConfig()->getAppValue('rainloop', 'rainloop-autologin', false)) { OCP\Util::connectHook('OC_User', 'post_login', 'OC_RainLoop_Helper', 'login'); OCP\Util::connectHook('OC_User', 'post_setPassword', 'OC_RainLoop_Helper', 'changePassword'); diff --git a/build/owncloud/rainloop-app/appinfo/info.xml b/build/owncloud/rainloop-app/appinfo/info.xml index a71679ce7..e28b0b589 100644 --- a/build/owncloud/rainloop-app/appinfo/info.xml +++ b/build/owncloud/rainloop-app/appinfo/info.xml @@ -11,7 +11,7 @@ 165254 - + tools diff --git a/build/owncloud/rainloop-app/lib/RainLoopHelper.php b/build/owncloud/rainloop-app/lib/RainLoopHelper.php index e38f260fa..7bfedad8b 100644 --- a/build/owncloud/rainloop-app/lib/RainLoopHelper.php +++ b/build/owncloud/rainloop-app/lib/RainLoopHelper.php @@ -191,7 +191,7 @@ class OC_RainLoop_Helper $sEmail = $sUser; $sPassword = $aParams['password']; - return OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-autologin-password', + return \OC::$server->getConfig()->setUserValue($sUser, 'rainloop', 'rainloop-autologin-password', self::encodePassword($sPassword, md5($sEmail))); } @@ -200,7 +200,7 @@ class OC_RainLoop_Helper public static function logout() { - OCP\Config::setUserValue( + \OC::$server->getConfig()->setUserValue( OCP\User::getUser(), 'rainloop', 'rainloop-autologin-password', ''); $sApiPath = __DIR__.'/../app/index.php'; @@ -231,10 +231,10 @@ class OC_RainLoop_Helper OCP\Util::writeLog('rainloop', 'rainloop|login: Setting new RainLoop password for '.$sEmail, OCP\Util::DEBUG); - OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-autologin-password', + \OC::$server->getConfig()->setUserValue($sUser, 'rainloop', 'rainloop-autologin-password', self::encodePassword($sPassword, md5($sEmail))); - OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-password', + \OC::$server->getConfig()->setUserValue($sUser, 'rainloop', 'rainloop-password', self::encodePassword($sPassword, md5($sEmail))); return true; diff --git a/build/owncloud/rainloop-app/personal.php b/build/owncloud/rainloop-app/personal.php index 449505116..cc920772c 100644 --- a/build/owncloud/rainloop-app/personal.php +++ b/build/owncloud/rainloop-app/personal.php @@ -13,7 +13,7 @@ OCP\App::checkAppEnabled('rainloop'); OCP\Util::addScript('rainloop', 'personal'); -if (OCP\Config::getAppValue('rainloop', 'rainloop-autologin', false)) +if (\OC::$server->getConfig()->getAppValue('rainloop', 'rainloop-autologin', false)) { $oTemplate = new OCP\Template('rainloop', 'empty'); } @@ -23,8 +23,8 @@ else $oTemplate = new OCP\Template('rainloop', 'personal'); - $sEmail = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-email', ''); - $sPass = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-password', ''); + $sEmail = \OC::$server->getConfig()->getUserValue($sUser, 'rainloop', 'rainloop-email', ''); + $sPass = \OC::$server->getConfig()->getUserValue($sUser, 'rainloop', 'rainloop-password', ''); $oTemplate->assign('rainloop-email', $sEmail); $oTemplate->assign('rainloop-password', 0 === strlen($sPass) && 0 === strlen($sEmail) ? '' : '******');