+
+
+
+
+
+
diff --git a/src/components/ModalEmailManagement.vue b/src/components/ModalEmailManagement.vue
new file mode 100644
index 000000000000..55fd2e8ad87f
--- /dev/null
+++ b/src/components/ModalEmailManagement.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
{{ $t('emailManagement.title') }}
+
+
+
+
+
+ {{ t('emailManagement.subtitle') }}
+
+
+
+
+
+
diff --git a/src/components/ModalEmailResend.vue b/src/components/ModalEmailResend.vue
new file mode 100644
index 000000000000..d78069931eea
--- /dev/null
+++ b/src/components/ModalEmailResend.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
{{ $t('emailResend.title') }}
+
+
+
+ {{ $t('emailResend.description') }}
+
+
+ {{ $t('close') }}
+
+
+
+
diff --git a/src/components/ModalEmailSubscription.vue b/src/components/ModalEmailSubscription.vue
new file mode 100644
index 000000000000..619b5b224ef7
--- /dev/null
+++ b/src/components/ModalEmailSubscription.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
{{ $t('emailSubscription.title') }}
+
+
+
+
+
+ {{ $t('emailSubscription.description') }}
+
+
+
+
+
+
+
+
+ {{ $t('emailSubscription.postSubscribeMessage.successThanks') }}
+
+
+ {{ $t('emailSubscription.postSubscribeMessage.successConfirmation') }}
+
+
+
+
+
+ {{ $t('close') }}
+
+
+
+
diff --git a/src/components/ModalPostVote.vue b/src/components/ModalPostVote.vue
index c541ad06c67d..09bc69fb0419 100644
--- a/src/components/ModalPostVote.vue
+++ b/src/components/ModalPostVote.vue
@@ -5,6 +5,7 @@ import { ExtendedSpace, Proposal } from '@/helpers/interfaces';
const { isGnosisSafe } = useClient();
const { shareVote, shareProposalTwitter, shareProposalLenster } = useSharing();
const { web3Account } = useWeb3();
+const { userState } = useEmailSubscription();
const props = defineProps<{
open: boolean;
@@ -13,7 +14,12 @@ const props = defineProps<{
selectedChoices: any;
}>();
-const emit = defineEmits(['close']);
+const emit = defineEmits(['close', 'subscribeEmail']);
+
+const subscribeEmail = () => {
+ emit('subscribeEmail');
+ emit('close');
+};
const imgPath = computed(() => {
return isGnosisSafe.value
@@ -80,6 +86,15 @@ function share(shareTo: 'twitter' | 'lenster') {
{{ $t('shareOnLenster') }}
+
+
+ {{ $t('proposal.postVoteModal.subscribe') }}
+
+
{
-
+
(null);
const loadedResults = ref(false);
const results = ref(null);
@@ -224,6 +225,12 @@ onMounted(() => setMessageVisibility(props.proposal.flagged));
:proposal="proposal"
:selected-choices="selectedChoices"
@close="isModalPostVoteOpen = false"
+ @subscribeEmail="modalEmailSubscriptionOpen = true"
+ />
+
diff --git a/src/composables/useEmailFetchClient.ts b/src/composables/useEmailFetchClient.ts
new file mode 100644
index 000000000000..a66c37891a76
--- /dev/null
+++ b/src/composables/useEmailFetchClient.ts
@@ -0,0 +1,89 @@
+import sign, { DataType } from '@/helpers/sign';
+import { createFetch } from '@vueuse/core';
+import { getInstance } from '@snapshot-labs/lock/plugins/vue3';
+
+const SubscribeSchema: DataType = {
+ Subscribe: [
+ { name: 'address', type: 'address' },
+ { name: 'email', type: 'string' }
+ ]
+};
+
+const UpdateSubscriptionsSchema: DataType = {
+ Subscriptions: [
+ { name: 'address', type: 'address' },
+ { name: 'email', type: 'string' },
+ { name: 'subscriptions', type: 'string[]' }
+ ]
+};
+
+const useEmailFetch = createFetch({
+ baseUrl: import.meta.env.VITE_ENVELOP_URL,
+ options: {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }
+});
+
+export function useEmailFetchClient() {
+ const { web3Account } = useWeb3();
+
+ function plainSign(message, typesSchema) {
+ const { web3 } = getInstance();
+
+ return sign(web3, web3Account.value, message, typesSchema);
+ }
+
+ const fetchSubscriptionsDetails = body => {
+ return useEmailFetch('/subscriber').post(body).json();
+ };
+
+ const subscribeWithEmail = async unsignedParams => {
+ let signature;
+ try {
+ signature = await plainSign(unsignedParams, SubscribeSchema);
+ } catch (error: any) {
+ return {
+ error: { value: 'sign_error' },
+ data: { value: null }
+ };
+ }
+ const body = {
+ method: 'snapshot.subscribe',
+ params: {
+ ...unsignedParams,
+ signature
+ }
+ };
+
+ return useEmailFetch('/').post(body).json();
+ };
+
+ const updateEmailSubscriptions = async unsignedParams => {
+ let signature;
+ try {
+ signature = await plainSign(unsignedParams, UpdateSubscriptionsSchema);
+ } catch (error: any) {
+ return {
+ error: { value: 'sign_error' },
+ data: { value: null }
+ };
+ }
+ const body = {
+ method: 'snapshot.update',
+ params: {
+ ...unsignedParams,
+ signature
+ }
+ };
+
+ return useEmailFetch('/').post(body).json();
+ };
+
+ return {
+ fetchSubscriptionsDetails,
+ subscribeWithEmail,
+ updateEmailSubscriptions
+ };
+}
diff --git a/src/composables/useEmailSubscription.ts b/src/composables/useEmailSubscription.ts
new file mode 100644
index 000000000000..eef124b7cb00
--- /dev/null
+++ b/src/composables/useEmailSubscription.ts
@@ -0,0 +1,94 @@
+import { createSharedComposable } from '@vueuse/core';
+
+const subscriptionTypes = ['summary', 'newProposal', 'closedProposal'] as const;
+type SubscriptionType = (typeof subscriptionTypes)[number];
+type SubscriptionStatus = 'NOT_SUBSCRIBED' | 'VERIFIED' | 'UNVERIFIED';
+
+function useEmailSubscriptionComposable() {
+ const { web3Account } = useWeb3();
+ const {
+ fetchSubscriptionsDetails,
+ subscribeWithEmail,
+ updateEmailSubscriptions
+ } = useEmailFetchClient();
+
+ const userState = ref('NOT_SUBSCRIBED');
+ const error = ref('');
+ const loading = ref(false);
+ const apiSubscriptions = ref([]);
+
+ const clientSubscriptions = computed({
+ get() {
+ return subscriptionTypes.reduce((acc, type) => {
+ acc[type] = apiSubscriptions.value.includes(type);
+ return acc;
+ }, {} as Record);
+ },
+ set(value) {
+ apiSubscriptions.value = Object.entries(value)
+ .map(([key, value]) => (value ? key : undefined))
+ .filter(Boolean)
+ .map(key => key as SubscriptionType);
+ }
+ });
+
+ const loadEmailSubscriptions = async () => {
+ loading.value = true;
+ const { error: err, data } = await fetchSubscriptionsDetails({
+ address: web3Account.value
+ });
+
+ if (err.value) {
+ loading.value = false;
+ return;
+ }
+
+ const { status: usrState, subscriptions } = data.value;
+ userState.value = usrState;
+ apiSubscriptions.value = subscriptions || [];
+ loading.value = false;
+ };
+
+ const subscribe = async (email: string) => {
+ loading.value = true;
+ const { data, error: err } = await subscribeWithEmail({
+ address: web3Account.value,
+ email
+ });
+ loading.value = false;
+
+ error.value = err.value;
+
+ if (!data.value || data.value?.result !== 'OK') {
+ error.value = 'unknown';
+ }
+
+ return data.value?.result === 'OK';
+ };
+
+ const updateSubscriptions = async () => {
+ loading.value = true;
+ const { error: err } = await updateEmailSubscriptions({
+ address: web3Account.value,
+ email: '',
+ subscriptions: apiSubscriptions.value
+ });
+ error.value = err.value;
+ loading.value = false;
+ loadEmailSubscriptions();
+ };
+
+ return {
+ userState,
+ error,
+ clientSubscriptions,
+ subscribe,
+ updateSubscriptions,
+ loadEmailSubscriptions,
+ loading
+ };
+}
+
+export const useEmailSubscription = createSharedComposable(
+ useEmailSubscriptionComposable
+);
diff --git a/src/helpers/sign.ts b/src/helpers/sign.ts
new file mode 100644
index 000000000000..7e1b938237bb
--- /dev/null
+++ b/src/helpers/sign.ts
@@ -0,0 +1,25 @@
+import { getAddress } from '@ethersproject/address';
+import type { Web3Provider } from '@ethersproject/providers';
+import type { Wallet } from '@ethersproject/wallet';
+
+const domain = {
+ name: 'snapshot',
+ version: '0.1.4'
+};
+
+export type DataType = Record;
+
+export type ISubscribe = {
+ address: string;
+} & Record;
+
+export default async function sign(
+ web3: Web3Provider | Wallet,
+ address: string,
+ message: ISubscribe,
+ types: DataType
+) {
+ const signer = 'getSigner' in web3 ? web3.getSigner() : web3;
+ message.address = getAddress(address);
+ return await signer._signTypedData(domain, types, message);
+}
diff --git a/src/locales/default.json b/src/locales/default.json
index 027692393332..c27791bd7d68 100644
--- a/src/locales/default.json
+++ b/src/locales/default.json
@@ -285,7 +285,8 @@
"seeQueue": "See queued transactions",
"tips": {
"1": "Votes can be changed while the proposal is active"
- }
+ },
+ "subscribe": "Subscribe with email"
},
"downloadCsvVotes": {
"title": "Download as CSV",
@@ -645,7 +646,8 @@
"proposalCreated": "Proposal created",
"voteSuccessful": "Your vote is in!",
"ensSet": "ENS text record was successfully set",
- "transactionSent": "Transaction sent"
+ "transactionSent": "Transaction sent",
+ "emailPreferencesUpdated": "Email preferences updated"
},
"explore": {
"createStrategy": "Create strategy",
@@ -977,6 +979,33 @@
"title": "Get the latest Snapshot updates",
"join": "Join Snapshot newsletter"
},
+ "emailSubscription": {
+ "title": "Email subscriptions",
+ "subscribe": "Subscribe",
+ "manage": "Manage subscriptions",
+ "description": "Subscribe to receive email notifications about your joined spaces and proposals activities.",
+ "inputCaption": "You may be asked to sign a message to verify wallet ownership",
+ "inputPlaceholder": "Your email",
+ "postSubscribeMessage": {
+ "successThanks": "Thanks for subscribing!",
+ "successConfirmation": "Please click the confirmation link that has been sent to your email."
+ }
+ },
+ "emailManagement": {
+ "title": "Subscription management",
+ "subtitle": "Choose the types of email updates that matter to you:",
+ "optionNewProposal": "Proposal creation",
+ "optionNewProposalDescription": "Get informed when a new proposal is submitted in your followed spaces.",
+ "optionClosedProposal": "Proposal closure",
+ "optionClosedProposalDescription": "Get informed when a proposal is closed in your followed spaces.",
+ "optionSummary": "Weekly summary",
+ "optionSummaryDescription": "Get a weekly report detailing the activity in your followed spaces.",
+ "updatePreferences": "Update preferences"
+ },
+ "emailResend": {
+ "title": "Verify email",
+ "description": "Email validation letter has been sent to your email address. Please click the confirmation link to complete the subscription."
+ },
"joinCommunity": "Join Snapshot community",
"header": {
"title": "Where decisions get made",
diff --git a/src/style.scss b/src/style.scss
index 9e64a6c305f6..87c1351ffa2f 100644
--- a/src/style.scss
+++ b/src/style.scss
@@ -117,6 +117,10 @@
@apply font-sans;
}
+.tune-sublabel {
+ @apply font-sans;
+}
+
.tune-button {
@apply rounded-full;
}
diff --git a/yarn.lock b/yarn.lock
index 40d9077905ef..319026d92c1b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -891,20 +891,13 @@
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892"
integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==
-"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.0.0":
+"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.0.0", "@ethersproject/networks@^5.7.0":
version "5.7.1"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6"
integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==
dependencies:
"@ethersproject/logger" "^5.7.0"
-"@ethersproject/networks@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.0.tgz#df72a392f1a63a57f87210515695a31a245845ad"
- integrity sha512-MG6oHSQHd4ebvJrleEQQ4HhVu8Ichr0RDYEfHzsVAVjHNM+w36x9wp9r+hf1JstMXtseXDtkiVoARAG6M959AA==
- dependencies:
- "@ethersproject/logger" "^5.7.0"
-
"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.0.0", "@ethersproject/pbkdf2@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102"
@@ -1049,7 +1042,7 @@
"@ethersproject/transactions" "^5.7.0"
"@ethersproject/wordlists" "^5.7.0"
-"@ethersproject/web@5.7.1", "@ethersproject/web@^5.0.0":
+"@ethersproject/web@5.7.1", "@ethersproject/web@^5.0.0", "@ethersproject/web@^5.7.0":
version "5.7.1"
resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae"
integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==
@@ -1060,17 +1053,6 @@
"@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0"
-"@ethersproject/web@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.0.tgz#40850c05260edad8b54827923bbad23d96aac0bc"
- integrity sha512-ApHcbbj+muRASVDSCl/tgxaH2LBkRMEYfLOLVa0COipx0+nlu0QKet7U2lEg0vdkh8XRSLf2nd1f1Uk9SrVSGA==
- dependencies:
- "@ethersproject/base64" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/strings" "^5.7.0"
-
"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.0.0", "@ethersproject/wordlists@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5"
@@ -1082,17 +1064,17 @@
"@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0"
-"@floating-ui/core@^1.0.0", "@floating-ui/core@^1.2.3":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.4.tgz#89e6311b021190c9e121fcf20306e76ac66e4066"
- integrity sha512-SQOeVbMwb1di+mVWWJLpsUTToKfqVNioXys011beCAhyOIFtS+GQoW4EQSneuxzmQKddExDwQ+X0hLl4lJJaSQ==
+"@floating-ui/core@^1.0.0", "@floating-ui/core@^1.2.6":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.6.tgz#d21ace437cc919cdd8f1640302fa8851e65e75c0"
+ integrity sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==
"@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.2.1":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.4.tgz#e2eb2674f57fc182c425587e48ea43e336f4b8f8"
- integrity sha512-4+k+BLhtWj+peCU60gp0+rHeR8+Ohqx6kjJf/lHMnJ8JD5Qj6jytcq1+SZzRwD7rvHKRhR7TDiWWddrNrfwQLg==
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.9.tgz#b9ed1c15d30963419a6736f1b7feb350dd49c603"
+ integrity sha512-sosQxsqgxMNkV3C+3UqTS6LxP7isRLwX8WMepp843Rb3/b0Wz8+MdUkxJksByip3C2WwLugLHN1b4ibn//zKwQ==
dependencies:
- "@floating-ui/core" "^1.2.3"
+ "@floating-ui/core" "^1.2.6"
"@floating-ui/vue@^0.2.0":
version "0.2.1"
@@ -1151,7 +1133,12 @@
"@floating-ui/dom" "^1.0.0"
"@floating-ui/vue" "^0.2.0"
-"@headlessui/vue@^1.7.12", "@headlessui/vue@^1.7.13":
+"@headlessui/vue@^1.7.12":
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.14.tgz#cc10712044944bc728f5ef8b2df2174c1194a55e"
+ integrity sha512-aL9U9Sa7wdOzlrfjx6EjMIYNRCma5mngWcWzQBcHFwznpRZ8g/QZ/AYFtRDrZZUw22Ttttja4D7ZRXFwhONewA==
+
+"@headlessui/vue@^1.7.13":
version "1.7.13"
resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.13.tgz#bf4c5e324c3a724f6f7911362e7f38989b754590"
integrity sha512-obG5TdPdBDfs+jiA1mY29LPFqyJl93Q90EL86ontfRe1B6XvbjPkx+x1aAC5DA18bXbb0Juni1ayDbXo0w1u0A==
@@ -3724,7 +3711,7 @@ acorn@^8.8.1, acorn@^8.9.0:
aes-js@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
- integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=
+ integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==
aes-js@4.0.0-beta.3:
version "4.0.0-beta.3"
@@ -3877,7 +3864,7 @@ any-promise@^1.0.0:
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
-anymatch@^3.0.0:
+anymatch@^3.0.0, anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
@@ -3885,14 +3872,6 @@ anymatch@^3.0.0:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-anymatch@~3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
append-transform@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12"
@@ -4980,7 +4959,7 @@ braces@^3.0.2, braces@~3.0.2:
brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
- integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+ integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
browser-or-node@^2.0.0:
version "2.0.0"
@@ -9150,7 +9129,7 @@ highlightjs-solidity@^2.0.6:
hmac-drbg@^1.0.0, hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
dependencies:
hash.js "^1.0.3"
minimalistic-assert "^1.0.0"
@@ -9450,9 +9429,9 @@ immediate@^3.2.3:
integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
immutable@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
- integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be"
+ integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
@@ -9667,7 +9646,7 @@ is-docker@^2.0.0, is-docker@^2.1.1:
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-finite@^1.0.0:
version "1.1.0"
@@ -10262,9 +10241,9 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
json-to-graphql-query@^2.2.4:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/json-to-graphql-query/-/json-to-graphql-query-2.2.4.tgz#ada9cfdbb9bf38589fd2661e1588d1edd0a882cc"
- integrity sha512-vNvsOKDSlEqYCzejI1xHS9Hm738dSnG4Upy09LUGqyybZXSIIb7NydDphB/6WxW2EEVpPU4JeU/Yo63Nw9dEJg==
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/json-to-graphql-query/-/json-to-graphql-query-2.2.5.tgz#56b072a693b50fd4dc981367b60d52e3dc78f426"
+ integrity sha512-5Nom9inkIMrtY992LMBBG1Zaekrc10JaRhyZgprwHBVMDtRgllTvzl0oBbg13wJsVZoSoFNNMaeIVQs0P04vsA==
json5@^0.5.1:
version "0.5.1"
@@ -10681,7 +10660,7 @@ lodash.once@^4.1.1:
lodash.set@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
- integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
+ integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==
lodash.snakecase@^4.1.1:
version "4.1.1"
@@ -11045,7 +11024,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
- integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+ integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
@@ -11099,9 +11078,9 @@ minipass@^4.2.4:
integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==
minisearch@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.0.1.tgz#55e40135e7e6be60f1c1c2f5ee890c334e179a86"
- integrity sha512-Ly1w0nHKnlhAAh6/BF/+9NgzXfoJxaJ8nhopFhQ3NcvFJrFIL+iCg9gw9e9UMBD+XIsp/RyznJ/o5UIe5Kw+kg==
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.1.0.tgz#6e74e743dbd0e88fa5ca52fef2391e0aa7055252"
+ integrity sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==
minizlib@^1.3.3:
version "1.3.3"
@@ -14485,7 +14464,7 @@ tough-cookie@~2.5.0:
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
trezor-connect@8.1.8:
version "8.1.8"
@@ -15487,7 +15466,7 @@ web3@1.8.2:
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
webidl-conversions@^7.0.0:
version "7.0.0"
@@ -15609,7 +15588,7 @@ whatwg-mimetype@^3.0.0:
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"