From e4d45921456a72da15f3acbfd748d8af3c052d00 Mon Sep 17 00:00:00 2001
From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com>
Date: Tue, 26 Dec 2023 10:36:59 -0300
Subject: [PATCH] feat: add "show more" to user info status (#5383)
* improve: handle long status text with a collapsible text element
* remove the points from show_more value
* refactor the path
* add storyshot
* remove comments
* minor tweak at pt-br
* add the e2e test
* remove fontInfo
* refactor layout
* fix e2e test
* fix the text for both platforms
* add comment
* update detox to 20.11 to accept regex and fix the test for show more
---
.storybook/storybook.requires.js | 1 +
.../CollapsibleText.stories.storyshot | 3 +
.../CollapsibleText.stories.tsx | 21 +++++
app/containers/CollapsibleText/index.tsx | 86 +++++++++++++++++++
app/i18n/locales/ar.json | 2 +-
app/i18n/locales/de.json | 2 +-
app/i18n/locales/en.json | 3 +-
app/i18n/locales/fi.json | 2 +-
app/i18n/locales/fr.json | 2 +-
app/i18n/locales/it.json | 2 +-
app/i18n/locales/ja.json | 1 -
app/i18n/locales/nl.json | 2 +-
app/i18n/locales/pt-BR.json | 3 +-
app/i18n/locales/ru.json | 2 +-
app/i18n/locales/sl-SI.json | 2 +-
app/i18n/locales/sv.json | 2 +-
app/i18n/locales/tr.json | 2 +-
.../components/RoomInfoViewTitle.tsx | 12 ++-
app/views/RoomInfoView/styles.ts | 13 ++-
e2e/tests/room/08-roominfo.spec.ts | 28 ++++++
package.json | 2 +-
yarn.lock | 79 ++++++++---------
22 files changed, 211 insertions(+), 61 deletions(-)
create mode 100644 __tests__/containers/CollapsibleText/__snapshots__/CollapsibleText.stories.storyshot
create mode 100644 app/containers/CollapsibleText/CollapsibleText.stories.tsx
create mode 100644 app/containers/CollapsibleText/index.tsx
diff --git a/.storybook/storybook.requires.js b/.storybook/storybook.requires.js
index 4536cd114..40df7c501 100644
--- a/.storybook/storybook.requires.js
+++ b/.storybook/storybook.requires.js
@@ -29,6 +29,7 @@ const getStories = () => {
require("../app/containers/markdown/Markdown.stories.tsx"),
require("../app/containers/markdown/new/NewMarkdown.stories.tsx"),
require("../app/containers/message/Components/CollapsibleQuote/CollapsibleQuote.stories.tsx"),
+ require("../app/containers/CollapsibleText/CollapsibleText.stories.tsx"),
require("../app/containers/message/Message.stories.tsx"),
require("../app/containers/ReactionsList/ReactionsList.stories.tsx"),
require("../app/containers/RoomHeader/RoomHeader.stories.tsx"),
diff --git a/__tests__/containers/CollapsibleText/__snapshots__/CollapsibleText.stories.storyshot b/__tests__/containers/CollapsibleText/__snapshots__/CollapsibleText.stories.storyshot
new file mode 100644
index 000000000..5cbe94633
--- /dev/null
+++ b/__tests__/containers/CollapsibleText/__snapshots__/CollapsibleText.stories.storyshot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Storyshots Collapsible Text Item 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"padding\\":20}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"Lorem ipsum dolor sit amet\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"textAlignVertical\\":\\"center\\"},{\\"color\\":\\"#2f343d\\",\\"height\\":0}],\\"testID\\":\\"collapsible-text-Lorem ipsum dolor sit amet\\"},\\"children\\":[\\"Lorem ipsum dolor sit amet\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"linesToTruncate: 1 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"textAlignVertical\\":\\"center\\"},{\\"color\\":\\"#2f343d\\",\\"height\\":0}],\\"testID\\":\\"collapsible-text-linesToTruncate: 1 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.\\"},\\"children\\":[\\"linesToTruncate: 1 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"linesToTruncate: 2 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"textAlignVertical\\":\\"center\\"},{\\"color\\":\\"#2f343d\\",\\"height\\":0}],\\"testID\\":\\"collapsible-text-linesToTruncate: 2 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.\\"},\\"children\\":[\\"linesToTruncate: 2 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.\\"]}]}"`;
diff --git a/app/containers/CollapsibleText/CollapsibleText.stories.tsx b/app/containers/CollapsibleText/CollapsibleText.stories.tsx
new file mode 100644
index 000000000..04d17ef96
--- /dev/null
+++ b/app/containers/CollapsibleText/CollapsibleText.stories.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { View } from 'react-native';
+
+import CollapsibleText from '.';
+
+const smallText = 'Lorem ipsum dolor sit amet';
+
+const text120 =
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel vestibulum neque. Proin dignissim neque in urna nec.';
+
+export default {
+ title: 'Collapsible Text'
+};
+
+export const Item = () => (
+
+
+
+
+
+);
diff --git a/app/containers/CollapsibleText/index.tsx b/app/containers/CollapsibleText/index.tsx
new file mode 100644
index 000000000..514740b16
--- /dev/null
+++ b/app/containers/CollapsibleText/index.tsx
@@ -0,0 +1,86 @@
+import React, { useState } from 'react';
+import { TextStyle, Text, StyleSheet } from 'react-native';
+
+import sharedStyles from '../../views/Styles';
+import { useTheme } from '../../theme';
+import { previewFormatText } from '../markdown/previewFormatText';
+import I18n from '../../i18n';
+
+interface ICollapsibleText {
+ msg?: string;
+ style?: TextStyle[];
+ linesToTruncate?: number;
+}
+
+const styles = StyleSheet.create({
+ text: {
+ fontSize: 16,
+ ...sharedStyles.textRegular,
+ textAlignVertical: 'center'
+ },
+ textInfo: {
+ fontSize: 14,
+ ...sharedStyles.textRegular
+ }
+});
+
+const CollapsibleText = ({ msg, style = [], linesToTruncate = 1 }: ICollapsibleText) => {
+ const [truncatedText, setTruncatedText] = useState('');
+ const [showTruncated, setShowTruncated] = useState(true);
+
+ const { colors } = useTheme();
+
+ if (!msg) {
+ return null;
+ }
+
+ const m = previewFormatText(msg);
+
+ if (truncatedText && showTruncated) {
+ return (
+
+
+ {`${truncatedText}... `}
+
+ setShowTruncated(false)} style={[styles.textInfo, { color: colors.actionTintColor }]}>
+ {I18n.t('Show_more')}
+
+
+ );
+ }
+
+ return (
+ {
+ const { lines } = event.nativeEvent;
+ if (lines.length > linesToTruncate) {
+ const text = lines
+ .splice(0, linesToTruncate)
+ .map(line => line.text)
+ .join('');
+ const truncatedTextLengthWithShowMore = text.length - (4 + I18n.t('Show_more').length);
+ const clippedText = text.slice(0, truncatedTextLengthWithShowMore);
+ setTruncatedText(clippedText);
+ } else {
+ setShowTruncated(false);
+ }
+ }}
+ >
+ {m}
+ {truncatedText ? (
+ setShowTruncated(true)}
+ style={[styles.textInfo, { color: colors.actionTintColor }]}
+ >
+ {` ${I18n.t('Show_less')}`}
+
+ ) : null}
+
+ );
+};
+
+export default CollapsibleText;
diff --git a/app/i18n/locales/ar.json b/app/i18n/locales/ar.json
index 5911d58a8..cb5df1b35 100644
--- a/app/i18n/locales/ar.json
+++ b/app/i18n/locales/ar.json
@@ -344,7 +344,7 @@
"Share": "مشاركة",
"Share_Link": "مشاركة رابط",
"Share_this_app": "مشاركة هذا البرنامج",
- "Show_more": "إظهار أكثر..",
+ "Show_more": "إظهار أكثر",
"Sign_Up": "تسجيل جديد",
"Sound": "الصوت",
"Star": "تمييز",
diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json
index d1415cf82..cac081cef 100644
--- a/app/i18n/locales/de.json
+++ b/app/i18n/locales/de.json
@@ -378,7 +378,7 @@
"Share": "Teilen",
"Share_Link": "Link teilen",
"Share_this_app": "App teilen",
- "Show_more": "Mehr anzeigen …",
+ "Show_more": "Mehr anzeigen",
"Sign_Up": "Anmelden",
"Sound": "Ton",
"Star": "Favoriten",
diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json
index 5753cb3a0..73f311964 100644
--- a/app/i18n/locales/en.json
+++ b/app/i18n/locales/en.json
@@ -378,7 +378,8 @@
"Share": "Share",
"Share_Link": "Share link",
"Share_this_app": "Share this app",
- "Show_more": "Show more..",
+ "Show_more": "Show more",
+ "Show_less": "Show less",
"Sign_Up": "Sign up",
"Sound": "Sound",
"Star": "Star",
diff --git a/app/i18n/locales/fi.json b/app/i18n/locales/fi.json
index 514e8cbd3..9daaa4169 100644
--- a/app/i18n/locales/fi.json
+++ b/app/i18n/locales/fi.json
@@ -378,7 +378,7 @@
"Share": "Jaa",
"Share_Link": "Jaa linkki",
"Share_this_app": "Jaa tämä sovellus",
- "Show_more": "Näytä lisää...",
+ "Show_more": "Näytä lisää",
"Sign_Up": "Rekisteröidy",
"Sound": "Ääni",
"Star": "Tähti",
diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json
index 863d87709..dd229bb2d 100644
--- a/app/i18n/locales/fr.json
+++ b/app/i18n/locales/fr.json
@@ -353,7 +353,7 @@
"Share": "Partager",
"Share_Link": "Partager le lien",
"Share_this_app": "Partager cette application",
- "Show_more": "Afficher plus..",
+ "Show_more": "Afficher plus",
"Sign_Up": "S'inscrire",
"Sound": "Son",
"Star": "Mettre en favoris",
diff --git a/app/i18n/locales/it.json b/app/i18n/locales/it.json
index 69190bdc7..62873f639 100644
--- a/app/i18n/locales/it.json
+++ b/app/i18n/locales/it.json
@@ -358,7 +358,7 @@
"Share": "Condividi",
"Share_Link": "Condividi link",
"Share_this_app": "Condividi questa app",
- "Show_more": "Mostra altri..",
+ "Show_more": "Mostra altri",
"Sign_Up": "Registrati",
"Sound": "Suono",
"Star": "Aggiungi ai preferiti",
diff --git a/app/i18n/locales/ja.json b/app/i18n/locales/ja.json
index 86bdd065d..e8cef1f39 100644
--- a/app/i18n/locales/ja.json
+++ b/app/i18n/locales/ja.json
@@ -310,7 +310,6 @@
"Share": "シェア",
"Share_Link": "リンクをシェアする",
"Share_this_app": "このアプリをシェアする",
- "Show_more": "Show more..",
"Sign_Up": "登録",
"Sound": "音",
"Star": "お気に入り",
diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json
index 6fc3919fa..8e4e37391 100644
--- a/app/i18n/locales/nl.json
+++ b/app/i18n/locales/nl.json
@@ -353,7 +353,7 @@
"Share": "Delen",
"Share_Link": "Deel link",
"Share_this_app": "Deel deze app",
- "Show_more": "Meer tonen..",
+ "Show_more": "Meer tonen",
"Sign_Up": "Registreren",
"Sound": "Geluid",
"Star": "Ster",
diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json
index 7a73a3bf2..ea9a1d4e1 100644
--- a/app/i18n/locales/pt-BR.json
+++ b/app/i18n/locales/pt-BR.json
@@ -378,7 +378,8 @@
"Share": "Compartilhar",
"Share_Link": "Compartilhar convite",
"Share_this_app": "Compartilhar esse app",
- "Show_more": "Mostrar mais..",
+ "Show_more": "Mostrar mais",
+ "Show_less": "Mostrar menos",
"Sign_Up": "Registrar",
"Sound": "Som da notificação",
"Star": "Favorito",
diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json
index de7818fe9..85c9b0ee3 100644
--- a/app/i18n/locales/ru.json
+++ b/app/i18n/locales/ru.json
@@ -364,7 +364,7 @@
"Share": "Поделиться",
"Share_Link": "Ссылка, чтобы Поделиться",
"Share_this_app": "Рассказать о приложении",
- "Show_more": "Показать больше..",
+ "Show_more": "Показать больше",
"Sign_Up": "Регистрация",
"Sound": "Звук",
"Star": "Отметить",
diff --git a/app/i18n/locales/sl-SI.json b/app/i18n/locales/sl-SI.json
index 471f53204..345ebe343 100644
--- a/app/i18n/locales/sl-SI.json
+++ b/app/i18n/locales/sl-SI.json
@@ -361,7 +361,7 @@
"Share": "Deliti",
"Share_Link": "Deliti povezavo",
"Share_this_app": "Delite to aplikacijo",
- "Show_more": "Prikaži več…",
+ "Show_more": "Prikaži več",
"Sign_Up": "Prijavite se",
"Sound": "Zvok",
"Star": "zvezda",
diff --git a/app/i18n/locales/sv.json b/app/i18n/locales/sv.json
index 67dcdf38a..3949e02da 100644
--- a/app/i18n/locales/sv.json
+++ b/app/i18n/locales/sv.json
@@ -378,7 +378,7 @@
"Share": "Dela",
"Share_Link": "Dela länk",
"Share_this_app": "Dela den här appen",
- "Show_more": "Visa mer.",
+ "Show_more": "Visa mer",
"Sign_Up": "Registrera dig",
"Sound": "Ljud",
"Star": "Stjärna",
diff --git a/app/i18n/locales/tr.json b/app/i18n/locales/tr.json
index a80ca0fc2..c789deea2 100644
--- a/app/i18n/locales/tr.json
+++ b/app/i18n/locales/tr.json
@@ -341,7 +341,7 @@
"Share": "Paylaş",
"Share_Link": "Bağlantı paylaş",
"Share_this_app": "Bu uygulamayı paylaş",
- "Show_more": "Daha fazla göster..",
+ "Show_more": "Daha fazla göster",
"Sign_Up": "Kaydol",
"Sound": "Ses",
"Star": "Yıldızla",
diff --git a/app/views/RoomInfoView/components/RoomInfoViewTitle.tsx b/app/views/RoomInfoView/components/RoomInfoViewTitle.tsx
index d2ef0875f..70f0892c1 100644
--- a/app/views/RoomInfoView/components/RoomInfoViewTitle.tsx
+++ b/app/views/RoomInfoView/components/RoomInfoViewTitle.tsx
@@ -4,9 +4,9 @@ import { Text, View } from 'react-native';
import { ISubscription, SubscriptionType } from '../../../definitions';
import styles from '../styles';
import { useTheme } from '../../../theme';
-import { MarkdownPreview } from '../../../containers/markdown';
import RoomTypeIcon from '../../../containers/RoomTypeIcon';
import { getRoomTitle } from '../../../lib/methods/helpers';
+import CollapsibleText from '../../../containers/CollapsibleText';
interface IRoomInfoViewTitle {
room?: ISubscription;
@@ -20,7 +20,7 @@ const RoomInfoViewTitle = ({ room, name, username, statusText, type }: IRoomInfo
const { colors } = useTheme();
if (type === SubscriptionType.DIRECT) {
return (
- <>
+
{name}
@@ -32,10 +32,14 @@ const RoomInfoViewTitle = ({ room, name, username, statusText, type }: IRoomInfo
)}
{!!statusText && (
-
+
)}
- >
+
);
}
return (
diff --git a/app/views/RoomInfoView/styles.ts b/app/views/RoomInfoView/styles.ts
index 22773af5f..133a162e5 100644
--- a/app/views/RoomInfoView/styles.ts
+++ b/app/views/RoomInfoView/styles.ts
@@ -28,18 +28,18 @@ export default StyleSheet.create({
marginHorizontal: 10
},
roomTitleContainer: {
- paddingTop: 32,
+ paddingTop: 16,
marginHorizontal: 16,
alignItems: 'center',
flexDirection: 'row'
},
roomTitle: {
- fontSize: 20,
+ fontSize: 16,
...sharedStyles.textAlignCenter,
...sharedStyles.textMedium
},
roomUsername: {
- fontSize: 18,
+ fontSize: 14,
...sharedStyles.textAlignCenter,
...sharedStyles.textRegular
},
@@ -75,7 +75,7 @@ export default StyleSheet.create({
},
roomButtonsContainer: {
flexDirection: 'row',
- paddingTop: 30
+ paddingTop: 16
},
roomButton: {
alignItems: 'center',
@@ -84,5 +84,10 @@ export default StyleSheet.create({
},
roomButtonText: {
marginTop: 5
+ },
+ roomInfoViewTitleContainer: {
+ paddingTop: 16,
+ paddingHorizontal: 20,
+ alignItems: 'center'
}
});
diff --git a/e2e/tests/room/08-roominfo.spec.ts b/e2e/tests/room/08-roominfo.spec.ts
index f48dcec46..c9902f3f0 100644
--- a/e2e/tests/room/08-roominfo.spec.ts
+++ b/e2e/tests/room/08-roominfo.spec.ts
@@ -268,5 +268,33 @@ describe('Room info screen', () => {
.withTimeout(10000);
});
});
+
+ describe('Navigate to user status-test', () => {
+ it('Back to rooms list view', async () => {
+ await tapBack();
+ await sleep(300);
+ await tapBack();
+ await sleep(300);
+ await tapBack();
+ await sleep(300);
+ });
+ it('should see the status text with show more label', async () => {
+ const statusTextExpected =
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam laoreet odio lectus, nec varius nisi semper ut porta ante';
+ await navigateToRoomInfo('status-test');
+ await waitFor(element(by.id(`collapsible-text-truncated-${statusTextExpected}`)))
+ .toBeVisible()
+ .withTimeout(10000);
+ await sleep(400);
+ const textWithShowMoreRegExp = /Lorem[\s\S]+... Show more/i
+ await waitFor(element(by[textMatcher](textWithShowMoreRegExp)))
+ .toExist()
+ .withTimeout(10000);
+ await element(by.id(`collapsible-text-truncated-${statusTextExpected}`)).tap({ x: 320, y: 24 });
+ await waitFor(element(by.id(`collapsible-text-${statusTextExpected}`)))
+ .toBeVisible()
+ .withTimeout(10000);
+ });
+ });
});
});
diff --git a/package.json b/package.json
index 3696e6d70..636fedefd 100644
--- a/package.json
+++ b/package.json
@@ -192,7 +192,7 @@
"babel-loader": "8.3.0",
"babel-plugin-transform-remove-console": "^6.9.4",
"codecov": "^3.8.3",
- "detox": "^20.1.2",
+ "detox": "20.11.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "2.26.0",
diff --git a/yarn.lock b/yarn.lock
index 8c2c3c5b3..8c10d1816 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3368,9 +3368,9 @@
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.21.0":
- version "7.22.11"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4"
- integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d"
+ integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==
dependencies:
regenerator-runtime "^0.14.0"
@@ -10143,19 +10143,20 @@ detect-port@^1.3.0:
address "^1.0.1"
debug "^2.6.0"
-detox@^20.1.2:
- version "20.1.2"
- resolved "https://registry.yarnpkg.com/detox/-/detox-20.1.2.tgz#a66c709080b53a80f3b6ba1671f5c0dbf5ae6dc7"
- integrity sha512-SGxLyuzE8TjIc4Lg49YKD0buj3JLaX+KtprSeFvn7ZTdWd4fH6o5Szd4KM21uBSpnYEEgXTgiCypPQst6dt5mQ==
+detox@20.11.0:
+ version "20.11.0"
+ resolved "https://registry.yarnpkg.com/detox/-/detox-20.11.0.tgz#f240e01db12334e0706b7f3477e59b8a5e4358c8"
+ integrity sha512-01LpETlZwfo2V7Awo+5ccUbee7E1lvH3ldLlmXxsx3mQ0pEA65f9CaO+FWhtUGYh7vQRMOQ9SnzYdej/ydQ7iQ==
dependencies:
ajv "^8.6.3"
bunyan "^1.8.12"
bunyan-debug-stream "^3.1.0"
caf "^15.0.1"
- chalk "^2.4.2"
+ chalk "^4.0.0"
child-process-promise "^2.2.0"
- find-up "^4.1.0"
- fs-extra "^4.0.2"
+ execa "^5.1.1"
+ find-up "^5.0.0"
+ fs-extra "^11.0.0"
funpermaproxy "^1.1.0"
glob "^8.0.3"
ini "^1.3.4"
@@ -10163,7 +10164,7 @@ detox@^20.1.2:
lodash "^4.17.11"
multi-sort-stream "^1.0.3"
multipipe "^4.0.0"
- node-ipc "^9.2.1"
+ node-ipc "9.2.1"
proper-lockfile "^3.0.2"
resolve-from "^5.0.0"
sanitize-filename "^1.6.1"
@@ -10178,8 +10179,8 @@ detox@^20.1.2:
trace-event-lib "^1.3.1"
which "^1.3.1"
ws "^7.0.0"
- yargs "^16.0.3"
- yargs-parser "^20.2.9"
+ yargs "^17.0.0"
+ yargs-parser "^21.0.0"
yargs-unparser "^2.0.0"
diff-sequences@^25.2.6:
@@ -11120,7 +11121,7 @@ execa@^2.0.3:
signal-exit "^3.0.2"
strip-final-newline "^2.0.0"
-execa@^5.0.0:
+execa@^5.0.0, execa@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
@@ -11925,14 +11926,14 @@ fs-extra@^10.1.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
-fs-extra@^4.0.2:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
- integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
+fs-extra@^11.0.0:
+ version "11.2.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
+ integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
fs-extra@^8.1.0, fs-extra@~8.1.0:
version "8.1.0"
@@ -15926,7 +15927,7 @@ node-int64@^0.4.0:
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
-node-ipc@^9.2.1:
+node-ipc@9.2.1:
version "9.2.1"
resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.2.1.tgz#b32f66115f9d6ce841dc4ec2009d6a733f98bb6b"
integrity sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==
@@ -18363,9 +18364,9 @@ regenerator-runtime@^0.13.7:
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
regenerator-runtime@^0.14.0:
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
- integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
regenerator-transform@^0.14.2:
version "0.14.4"
@@ -21636,7 +21637,7 @@ yargs@^15.1.0, yargs@^15.3.1:
y18n "^4.0.0"
yargs-parser "^18.1.2"
-yargs@^16.0.3, yargs@^16.1.1, yargs@^16.2.0:
+yargs@^16.1.1, yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
@@ -21649,6 +21650,19 @@ yargs@^16.0.3, yargs@^16.1.1, yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@^17.0.0, yargs@^17.5.1:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yargs@^17.3.1:
version "17.5.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e"
@@ -21662,19 +21676,6 @@ yargs@^17.3.1:
y18n "^5.0.5"
yargs-parser "^21.0.0"
-yargs@^17.5.1:
- version "17.7.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
- integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
- dependencies:
- cliui "^8.0.1"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.3"
- y18n "^5.0.5"
- yargs-parser "^21.1.1"
-
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"