From 8941fcc3ee517e7f8590d55606b69eebca911682 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 17 May 2022 16:20:51 -0600 Subject: [PATCH 001/108] Initial Notify setup steps --- packages/core/package.json | 4 +- packages/core/src/i18n/en.json | 87 + packages/core/src/index.ts | 11 +- packages/core/src/notifications.ts | 209 ++ packages/core/src/notify.ts | 306 ++ packages/core/src/notifyDefaults.ts | 40 + packages/core/src/store/actions.ts | 23 +- packages/core/src/store/constants.ts | 1 + packages/core/src/store/index.ts | 14 + packages/core/src/stores.ts | 109 + packages/core/src/transactions.ts | 392 +++ packages/core/src/types.ts | 279 ++ packages/core/src/utils.ts | 153 + packages/core/src/validation.ts | 529 +++- packages/core/src/views/Index.svelte | 5 + .../notify/components/AutoDismiss.svelte | 15 + .../views/notify/components/CloseIcon.svelte | 50 + .../components/NotificationContent.svelte | 93 + .../views/notify/components/TypeIcon.svelte | 737 +++++ .../src/views/notify/elements/Clock.svelte | 37 + .../elements/NotificationMessage.svelte | 18 + .../src/views/notify/elements/Time.svelte | 17 + .../src/views/notify/elements/Timer.svelte | 16 + .../core/src/views/notify/views/Notify.svelte | 211 ++ packages/core/yarn.lock | 2710 +++++++++++++++++ yarn.lock | 166 + 26 files changed, 6228 insertions(+), 4 deletions(-) create mode 100644 packages/core/src/notifications.ts create mode 100644 packages/core/src/notify.ts create mode 100644 packages/core/src/notifyDefaults.ts create mode 100644 packages/core/src/stores.ts create mode 100644 packages/core/src/transactions.ts create mode 100644 packages/core/src/views/notify/components/AutoDismiss.svelte create mode 100644 packages/core/src/views/notify/components/CloseIcon.svelte create mode 100644 packages/core/src/views/notify/components/NotificationContent.svelte create mode 100644 packages/core/src/views/notify/components/TypeIcon.svelte create mode 100644 packages/core/src/views/notify/elements/Clock.svelte create mode 100644 packages/core/src/views/notify/elements/NotificationMessage.svelte create mode 100644 packages/core/src/views/notify/elements/Time.svelte create mode 100644 packages/core/src/views/notify/elements/Timer.svelte create mode 100644 packages/core/src/views/notify/views/Notify.svelte create mode 100644 packages/core/yarn.lock diff --git a/packages/core/package.json b/packages/core/package.json index ef35cff2a..97a7db321 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -42,6 +42,7 @@ }, "dependencies": { "@web3-onboard/common": "^2.0.7", + "bnc-sdk": "^4.2.0", "bowser": "^2.11.0", "ethers": "5.5.3", "eventemitter3": "^4.0.7", @@ -50,6 +51,7 @@ "lodash.partition": "^4.6.0", "rxjs": "^7.5.2", "svelte": "^3.46.4", - "svelte-i18n": "^3.3.13" + "svelte-i18n": "^3.3.13", + "uuid": "^8.3.2" } } diff --git a/packages/core/src/i18n/en.json b/packages/core/src/i18n/en.json index 3469ddc43..686a65d62 100644 --- a/packages/core/src/i18n/en.json +++ b/packages/core/src/i18n/en.json @@ -71,5 +71,92 @@ "addAccount": "Add Account", "setPrimaryAccount": "Set Primary Account", "disconnectWallet": "Disconnect Wallet" + }, + "defaultNotifyMessages": { + "en": { + "transaction": { + "txRequest": "Your transaction is waiting for you to confirm", + "nsfFail": "You have insufficient funds to complete this transaction", + "txUnderpriced": + "The gas price for your transaction is too low, try again with a higher gas price", + "txRepeat": "This could be a repeat transaction", + "txAwaitingApproval": + "You have a previous transaction waiting for you to confirm", + "txConfirmReminder": + "Please confirm your transaction to continue, the transaction window may be behind your browser", + "txSendFail": "You rejected the transaction", + "txSent": "Your transaction has been sent to the network", + "txStallPending": + "Your transaction has stalled and has not entered the transaction pool", + "txStuck": "Your transaction is stuck due to a nonce gap", + "txPool": "Your transaction has started", + "txStallConfirmed": + "Your transaction has stalled and hasn't been confirmed", + "txSpeedUp": "Your transaction has been sped up", + "txCancel": "Your transaction is being canceled", + "txFailed": "Your transaction has failed", + "txConfirmed": "Your transaction has succeeded", + "txError": "Oops something went wrong, please try again" + }, + "watched": { + "txPool": + "Your account is {verb} {formattedValue} {asset} {preposition} {counterpartyShortened}", + "txSpeedUp": + "Transaction for {formattedValue} {asset} {preposition} {counterpartyShortened} has been sped up", + "txCancel": + "Transaction for {formattedValue} {asset} {preposition} {counterpartyShortened} has been canceled", + "txConfirmed": + "Your account successfully {verb} {formattedValue} {asset} {preposition} {counterpartyShortened}", + "txFailed": + "Your account failed to {verb} {formattedValue} {asset} {preposition} {counterpartyShortened}" + }, + "time": { + "minutes": "min", + "seconds": "sec" + } + }, + "es": { + "transaction": { + "txRequest": "Su transacción está esperando que confirme", + "nsfFail": "No tiene fondos suficientes para completar esta transacción.", + "txUnderpriced": + "El precio del gas para su transacción es demasiado bajo, intente nuevamente con un precio del gas más alto", + "txRepeat": "Esto podría ser una transacción repetida", + "txAwaitingApproval": + "Tienes una transacción anterior esperando que confirmes", + "txConfirmReminder": + "Confirme su transacción para continuar, la ventana de transacción puede estar detrás de su navegador", + "txSendFail": "Rechazaste la transacción", + "txSent": "Su transacción ha sido enviada a la red.", + "txStallPending": + "Su transacción se ha estancado y no ha ingresado al grupo de transacciones", + "txStuck": "Su transacción está atascada debido a una brecha de nonce", + "txPool": "Su transacción ha comenzado", + "txStallConfirmed": + "Su transacción se ha estancado y no ha sido confirmada.", + "txSpeedUp": "Su transacción ha sido acelerada", + "txCancel": "Tu transacción está siendo cancelada", + "txFailed": "Su transacción ha fallado", + "txConfirmed": "Su transacción ha tenido éxito.", + "txError": "Vaya, algo salió mal, por favor intente nuevamente" + }, + "watched": { + "txPool": + "su cuenta está {verb, select, receiving {recibiendo} sending {enviando}} {formattedValue} {asset} {preposition, select, from {desde} to {a}} {counterpartyShortened}", + "txSpeedUp": + "su cuenta está {verb, select, receiving {recibiendo} sending {enviando}} {formattedValue} {asset} {preposition, select, from {desde} to {a}} {counterpartyShortened}", + "txCancel": + "su cuenta está {verb, select, receiving {recibiendo} sending {enviando}} {formattedValue} {asset} {preposition, select, from {desde} to {a}} {counterpartyShortened}", + "txConfirmed": + "su cuenta {verb, select, received {recibió} sent {ha enviado}} con éxito {formattedValue} {asset} {preposition, select, from {de} to {a}} {counterpartyShortened}", + "txFailed": + "su cuenta fallado {verb, select, received {recibió} sent {ha enviado}} con éxito {formattedValue} {asset} {preposition, select, from {de} to {a}} {counterpartyShortened}" + }, + "time": { + "minutes": "min", + "seconds": "sec" + } + } } + } diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f62d4d2fe..18a09a0d3 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -7,6 +7,7 @@ import { addChains, setWalletModules, updateAccountCenter, + updateNotify, setLocale } from './store/actions' import { reset$, internalState$ } from './streams' @@ -53,7 +54,7 @@ function init(options: InitOptions): OnboardAPI { } } - const { wallets, chains, appMetadata = null, i18n, accountCenter } = options + const { wallets, chains, appMetadata = null, i18n, accountCenter, notify } = options initI18N(i18n) addChains(chains) @@ -72,6 +73,14 @@ function init(options: InitOptions): OnboardAPI { accountCenterUpdate && updateAccountCenter(accountCenterUpdate) + let notifyUpdate + + if (typeof notify !== 'undefined' && notify.desktop) { + notifyUpdate = notify.desktop + } + + notifyUpdate && updateNotify(notifyUpdate) + const { svelteInstance } = internalState$.getValue() if (svelteInstance) { diff --git a/packages/core/src/notifications.ts b/packages/core/src/notifications.ts new file mode 100644 index 000000000..4ed6900b0 --- /dev/null +++ b/packages/core/src/notifications.ts @@ -0,0 +1,209 @@ +import { _ } from 'svelte-i18n' +import BigNumber from 'bignumber.js' +import { notifications } from './stores' +import { eventToType, typeToDismissTimeout } from './notifyDefaults' +import { defaultNotifyMessages } from './i18n' + +import type { + CustomNotificationObject, + TransactionData, + NotificationType, + BitcoinInputOutput +} from './types' + +// subscribe to the formatter store +let formatter: any +_.subscribe((store: any) => (formatter = store)) + +export function createNotification( + transactionDetails: TransactionData, + customization: CustomNotificationObject | boolean | void = {} +): void { + const notificationObject = + transactionDetails.system === 'bitcoin' + ? createBitcoinNotificationObject(transactionDetails, customization) + : createEthereumNotificationObject(transactionDetails, customization) + + notifications.add(notificationObject) +} + +function createBitcoinNotificationObject( + transactionDetails: TransactionData, + customization: CustomNotificationObject | boolean | void +) { + const { + id, + txid, + startTime, + eventCode, + watchedAddress, + inputs, + outputs + } = transactionDetails + const type: NotificationType = eventToType(eventCode) + const key = `${id || txid}-${ + (typeof customization === 'object' && customization.eventCode) || eventCode + }` + + const { direction, value } = getBitcoinDirectionValue( + inputs, + outputs, + watchedAddress + ) + + const formatterOptions = watchedAddress + ? { + messageId: `watched['${eventCode}']`, + values: { + verb: + eventCode === 'txConfirmed' + ? direction === 'incoming' + ? 'received' + : 'sent' + : direction === 'incoming' + ? 'receiving' + : 'sending', + formattedValue: value, + asset: 'BTC', + preposition: '', + counterpartyShortened: '' + } + } + : { + messageId: `transaction['${eventCode}']`, + values: { value, asset: 'BTC' } + } + + const internationalizedMessage = formatter(formatterOptions.messageId, { + values: formatterOptions.values + }) + + const noMessageAvailable = + internationalizedMessage === formatterOptions.messageId + + const message = noMessageAvailable + ? defaultNotifyMessages.en[watchedAddress ? 'watched' : 'transaction'][ + eventCode || '' + ] + : internationalizedMessage + + let notificationObject = { + id: id || txid, + type, + key, + startTime, + eventCode, + message, + autoDismiss: typeToDismissTimeout( + (typeof customization === 'object' && customization.type) || type + ) + } + if (typeof customization === 'object') { + notificationObject = { ...notificationObject, ...customization } + } + + return notificationObject +} + +function createEthereumNotificationObject( + transactionDetails: TransactionData, + customization: CustomNotificationObject | boolean | void +) { + const { + id, + hash, + startTime, + eventCode, + direction, + counterparty, + value, + asset + } = transactionDetails + + const type: NotificationType = eventToType(eventCode) + const key = `${id || hash}-${ + (typeof customization === 'object' && customization.eventCode) || eventCode + }` + const counterpartyShortened: string | undefined = + counterparty && + counterparty.substring(0, 4) + + '...' + + counterparty.substring(counterparty.length - 4) + + const formattedValue = new BigNumber(value || 0) + .div(new BigNumber('1000000000000000000')) + .toString(10) + + const formatterOptions = + counterparty && value + ? { + messageId: `watched['${eventCode}']`, + values: { + verb: + eventCode === 'txConfirmed' + ? direction === 'incoming' + ? 'received' + : 'sent' + : direction === 'incoming' + ? 'receiving' + : 'sending', + formattedValue, + preposition: direction === 'incoming' ? 'from' : 'to', + counterpartyShortened, + asset + } + } + : { + messageId: `transaction['${eventCode}']`, + values: { formattedValue, asset } + } + + const internationalizedMessage = formatter(formatterOptions.messageId, { + values: formatterOptions.values + }) + + const noMessageAvailable = + internationalizedMessage === formatterOptions.messageId + + const message = noMessageAvailable + ? defaultNotifyMessages.en[counterparty ? 'watched' : 'transaction'][ + eventCode || '' + ] + : internationalizedMessage + + let notificationObject = { + id: id || hash, + type, + key, + startTime, + eventCode, + message, + autoDismiss: typeToDismissTimeout( + (typeof customization === 'object' && customization.type) || type + ) + } + + if (typeof customization === 'object') { + notificationObject = { ...notificationObject, ...customization } + } + + return notificationObject +} + +function getBitcoinDirectionValue( + inputs: BitcoinInputOutput[] | undefined, + outputs: BitcoinInputOutput[] | undefined, + watchedAddress: string | undefined +) { + if (!watchedAddress) return { value: null, direction: '' } + + const finder = (i: BitcoinInputOutput) => i.address === watchedAddress + + const input = inputs && inputs.find(finder) + const output = outputs && outputs.find(finder) + + return { + direction: output ? 'incoming' : 'outgoing', + value: output ? output.value : input && input.value + } +} diff --git a/packages/core/src/notify.ts b/packages/core/src/notify.ts new file mode 100644 index 000000000..9ad0b7a3f --- /dev/null +++ b/packages/core/src/notify.ts @@ -0,0 +1,306 @@ +import 'regenerator-runtime/runtime' +import BlocknativeSdk from 'bnc-sdk' +import type { TransactionHandler } from 'bnc-sdk/dist/types/src/interfaces' +import { get } from 'svelte/store' + +import uuid from 'uuid/v4' +import { locale, dictionary, getClientLocale } from 'svelte-i18n' + +import Notify from './views/notify/views/Notify.svelte' + +import { app, notifications } from './stores' +import { handleTransactionEvent, preflightTransaction } from './transactions' +import { createNotification } from './notifications' + +import type { + NotifyInitOptions, + AppStore, + API, + Emitter, + TransactionOptions, + CustomNotificationObject, + UpdateNotification, + ConfigOptions, + LocaleMessages +} from './types' + +export { + NotifyInitOptions, + TransactionEvent, + System, + TransactionEventCode, + TransactionData, + NotificationType, + CustomNotificationObject, + BitcoinInputOutput, + NotificationObject, + ContractCall, + DecodedContractCall, + NotifyMessages, + LocaleMessages, + TransactionOptions, + PreflightEvent, + UpdateNotification, + ConfigOptions, + Hash, + Transaction, + NotifyAccount, + Unsubscribe, + Notification, + Config, + API, + EmitterListener, + Emitter, + NotificationDetails +} from './types' + +import { + validateInit, + validateTransactionOptions, + validateNotificationObject, + validateConfig +} from './validation' + +import { createEmitter } from './utils' + +import { version } from '../package.json' + +let notify: any +let blocknative + +function init(options: NotifyInitOptions): API { + if (notify) { + console.warn('notify has already been initialized') + notify.$destroy() + blocknative && blocknative.destroy() + } + + validateInit(options) + + const { system, transactionHandler, apiUrl, ...appOptions } = options + const { dappId, networkId, name, clientLocale, onerror } = appOptions + + const transactionHandlers: TransactionHandler[] = [handleTransactionEvent] + + if (transactionHandler) { + transactionHandlers.push(transactionHandler) + } + + if (dappId) { + blocknative = new BlocknativeSdk({ + dappId, + networkId, + onerror, + transactionHandlers, + name: name || 'Notify', + apiUrl, + system + }) + + // filter out pending simulation events + blocknative + .configuration({ + scope: 'global', + filters: [{ status: 'pending-simulation', _not: true }] + }) + .catch(() => { + // swallow server timeout response error as we are not waiting on it + }) + } + + // save config to app store + app.update((store: AppStore) => ({ + ...store, + ...appOptions, + version, + clientLocale: + clientLocale || + getClientLocale({ + fallback: 'en', + navigator: true + }) + })) + + // initialize App + notify = new Notify({ + target: document.body + }) + + app.subscribe((store: AppStore) => { + const { notifyMessages, clientLocale } = store + + // set the dictionary for i18n + dictionary.set(notifyMessages) + + const availableLocale: LocaleMessages | undefined = + notifyMessages[clientLocale] || notifyMessages[clientLocale.slice(0, 2)] + locale.set(availableLocale ? clientLocale : 'en') + }) + + return { + hash, + transaction, + account, + unsubscribe, + notification, + config + } + + function account( + address: string + ): { details: { address: string }; emitter: Emitter } | never { + if (!blocknative) { + throw new Error( + 'A dappId needs to be passed in when intializing Notify to use the account function' + ) + } + + const result = blocknative.account(address) + return result + } + + function hash(hash: string, id?: string) { + if (!blocknative) { + throw new Error( + 'A dappId needs to be passed in when intializing Notify to use the hash function' + ) + } + + const result = blocknative.transaction(hash, id) + return result + } + + function transaction( + options: TransactionOptions + ): { result: Promise; emitter: Emitter } { + if (!blocknative) { + throw new Error( + 'A dappId needs to be passed in when intializing Notify to use the transaction function' + ) + } + + validateTransactionOptions(options) + + const emitter = createEmitter() + + const result = preflightTransaction(blocknative, options, emitter).catch( + err => { + const { onerror } = get(app) + onerror && onerror(err) + return err + } + ) + + return { + emitter, + result + } + } + + function unsubscribe(addressOrHash: string) { + if (!blocknative) { + throw new Error( + 'A dappId needs to be passed in when intializing Notify to use the unsubscribe function' + ) + } + + blocknative.unsubscribe(addressOrHash) + } + + function notification( + notificationObject: CustomNotificationObject + ): { + dismiss: () => void + update: UpdateNotification + } { + validateNotificationObject(notificationObject) + + let key = 0 + + const id: string = uuid() + const startTime: number = Date.now() + const { eventCode = `customNotification${key++}` } = notificationObject + + const dismiss = () => notifications.remove(id, eventCode) + + function update( + notificationUpdate: CustomNotificationObject + ): { + dismiss: () => void + update: UpdateNotification + } { + validateNotificationObject(notificationUpdate) + + const { eventCode = `customNotification${key++}` } = notificationUpdate + createNotification({ id, startTime, eventCode }, notificationUpdate) + + return { + dismiss, + update + } + } + + createNotification({ id, startTime, eventCode }, notificationObject) + + return { + dismiss, + update + } + } + + function config(options: ConfigOptions): void { + validateConfig(options) + + const { + notifyMessages, + networkId: newNetworkId, + system: newSystem, + ...otherOptions + } = options + + const { networkId, system, dappId, transactionHandler, name, apiUrl } = get( + app + ) + + // networkId or system has changed + if ( + (newNetworkId && newNetworkId !== networkId) || + (newSystem && newSystem !== system) + ) { + if (!blocknative) { + throw new Error( + 'A dappId needs to be passed in when intializing Notify to be able to connect to a system and network' + ) + } + + // close existing SDK connection + blocknative.destroy() + + // create new connection with new values + blocknative = new BlocknativeSdk({ + dappId, + networkId: newNetworkId || networkId, + transactionHandlers: transactionHandler + ? [handleTransactionEvent, transactionHandler] + : [handleTransactionEvent], + name: name || 'Notify', + apiUrl, + system: newSystem || system + }) + } + + app.update((store: AppStore) => { + return { + ...store, + networkId: newNetworkId || networkId, + system: newSystem || system, + ...otherOptions, + notifyMessages: notifyMessages + ? { ...store.notifyMessages, ...notifyMessages } + : store.notifyMessages + } + }) + } +} + +export default init diff --git a/packages/core/src/notifyDefaults.ts b/packages/core/src/notifyDefaults.ts new file mode 100644 index 000000000..5d9515b62 --- /dev/null +++ b/packages/core/src/notifyDefaults.ts @@ -0,0 +1,40 @@ +import type { NotificationType } from './types' + +export function eventToType(eventCode: string | undefined): NotificationType { + switch (eventCode) { + case 'txSent': + case 'txPool': + case 'txSpeedUp': + case 'txCancel': + return 'pending' + case 'txRequest': + case 'txRepeat': + case 'txAwaitingApproval': + case 'txConfirmReminder': + case 'txStallPending': + case 'txStallConfirmed': + case 'txStuck': + return 'hint' + case 'txError': + case 'txSendFail': + case 'txFailed': + case 'txDropped': + case 'nsfFail': + case 'txUnderpriced': + return 'error' + case 'txConfirmed': + return 'success' + default: + return 'hint' + } +} + +export function typeToDismissTimeout(type: string): number { + switch (type) { + case 'success': + case 'hint': + return 4000 + default: + return 0 + } +} diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index e85b01f5d..0c21510e9 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -14,13 +14,16 @@ import type { SetLocaleAction, UpdateAccountAction, UpdateAccountCenterAction, + UpdateNotifyAction, UpdateWalletAction, - WalletState + WalletState, + NotifyOptions } from '../types' import { validateAccountCenterUpdate, validateLocale, + validateNotifyUpdate, validateString, validateWallet, validateWalletInit @@ -34,6 +37,7 @@ import { REMOVE_WALLET, UPDATE_ACCOUNT, UPDATE_ACCOUNT_CENTER, + UPDATE_NOTIFY, SET_WALLET_MODULES, SET_LOCALE } from './constants' @@ -137,6 +141,23 @@ export function updateAccountCenter( dispatch(action as UpdateAccountCenterAction) } +export function updateNotify( + update: NotifyOptions | Partial +): void { + const error = validateNotifyUpdate(update) + + if (error) { + throw error + } + + const action = { + type: UPDATE_NOTIFY, + payload: update + } + + dispatch(action as UpdateNotifyAction) +} + export function resetStore(): void { const action = { type: RESET_STORE diff --git a/packages/core/src/store/constants.ts b/packages/core/src/store/constants.ts index 7fe7e89a9..276eab1e5 100644 --- a/packages/core/src/store/constants.ts +++ b/packages/core/src/store/constants.ts @@ -7,3 +7,4 @@ export const UPDATE_ACCOUNT = 'update_account' export const UPDATE_ACCOUNT_CENTER = 'update_account_center' export const SET_WALLET_MODULES = 'set_wallet_modules' export const SET_LOCALE= 'set_locale' +export const UPDATE_NOTIFY= 'update_notify' diff --git a/packages/core/src/store/index.ts b/packages/core/src/store/index.ts index 1dee9ccec..f174953ca 100644 --- a/packages/core/src/store/index.ts +++ b/packages/core/src/store/index.ts @@ -14,6 +14,7 @@ import type { AddWalletAction, UpdateAccountAction, UpdateAccountCenterAction, + UpdateNotify, Locale } from '../types' @@ -25,6 +26,7 @@ import { RESET_STORE, UPDATE_ACCOUNT, UPDATE_ACCOUNT_CENTER, + UPDATE_NOTIFY, SET_WALLET_MODULES, SET_LOCALE } from './constants' @@ -104,6 +106,17 @@ function reducer(state: AppState, action: Action): AppState { case UPDATE_ACCOUNT_CENTER: { const update = payload as UpdateAccountCenterAction['payload'] + return { + ...state, + notify: { + ...state.notify, + ...update + } + } + } + + case UPDATE_NOTIFY: { + const update = payload as UpdateNotify['payload'] return { ...state, accountCenter: { @@ -112,6 +125,7 @@ function reducer(state: AppState, action: Action): AppState { } } } + case SET_WALLET_MODULES: { return { ...state, diff --git a/packages/core/src/stores.ts b/packages/core/src/stores.ts new file mode 100644 index 000000000..564194bce --- /dev/null +++ b/packages/core/src/stores.ts @@ -0,0 +1,109 @@ +import { writable } from 'svelte/store' +import { replaceOrAdd } from './utils' +import { defaultNotifyMessages } from './i18n' + +import type { + TransactionData, + NotificationObject, + CustomNotificationObject, + AppStore +} from './types' + +export const app = writable({ + version: '', + name: '', + dappId: '', + networkId: 1, + nodeSynced: true, + mobilePosition: 'top', + desktopPosition: 'bottomRight', + darkMode: false, + txApproveReminderTimeout: 20000, + txStallPendingTimeout: 20000, + txStallConfirmedTimeout: 90000, + clientLocale: 'en', + notifyMessages: defaultNotifyMessages +}) +export const accounts = writable([]) +export const contracts = writable([]) +export const transactions = createTransactionStore([]) +export const notifications = createNotificationStore([]) + +function createTransactionStore(initialState: TransactionData[]) { + const { subscribe, update } = writable(initialState) + + function updateQueue( + transaction: TransactionData, + predicate: (tx: TransactionData) => boolean + ) { + update((store: TransactionData[]) => { + return replaceOrAdd(store, predicate, transaction) + }) + } + + function add(transaction: TransactionData) { + update((store: TransactionData[]) => [...store, transaction]) + } + + return { + subscribe, + updateQueue, + add + } +} + +function createNotificationStore( + initialState: (NotificationObject & CustomNotificationObject)[] +) { + const { subscribe, update } = writable(initialState) + + function add(notification: NotificationObject & CustomNotificationObject) { + update((store: (NotificationObject & CustomNotificationObject)[]) => { + const existingNotification = store.find( + (n: NotificationObject & CustomNotificationObject) => + n.id === notification.id + ) + + // if notification is a hint type or there are + // no existing notifications with same id, then just add it. + if (notification.type === 'hint' || !existingNotification) { + return [...store, notification] + } + + // otherwise filter out all notifications with the + // same id and then add the new notification + return [ + ...store.filter( + (n: NotificationObject & CustomNotificationObject) => + n.id !== notification.id + ), + notification + ] + }) + } + + function remove(id: string, eventCode: string) { + update((store: (NotificationObject & CustomNotificationObject)[]) => + store.filter( + (n: NotificationObject & CustomNotificationObject) => + n.id !== id || n.eventCode !== eventCode + ) + ) + } + + function updateId(oldId: string, newId: string) { + update((store: (NotificationObject & CustomNotificationObject)[]) => + store.map((n: NotificationObject & CustomNotificationObject) => + n.id === oldId ? { ...n, id: newId } : n + ) + ) + } + + return { + subscribe, + add, + remove, + update, + updateId + } +} diff --git a/packages/core/src/transactions.ts b/packages/core/src/transactions.ts new file mode 100644 index 000000000..e9b6388ef --- /dev/null +++ b/packages/core/src/transactions.ts @@ -0,0 +1,392 @@ +import BigNumber from 'bignumber.js' +import { uuid } from 'uuidv4'; +import { get } from 'svelte/store' + +import { transactions, app, notifications } from './stores' +import { createNotification } from './notifications' +import { argsEqual, extractMessageFromError, localNetwork } from './utils' +import { validateNotificationObject } from './validation' + +import type { + TransactionData, + PreflightEvent, + ContractCall, + CustomNotificationObject, + Emitter, + TransactionOptions +} from './types' + +let transactionQueue: TransactionData[] +transactions.subscribe((store: TransactionData[]) => (transactionQueue = store)) + +export function handlePreFlightEvent( + blocknative, + preflightEvent: PreflightEvent +) { + const { eventCode, contractCall, balance, txDetails, emitter, status } = + preflightEvent + + let contract + + if (contractCall) { + contract = { + methodName: contractCall.methodName, + parameters: contractCall.params + } + } + + blocknative.event({ + categoryCode: contractCall ? 'activeContract' : 'activeTransaction', + eventCode, + transaction: txDetails, + wallet: { balance }, + contract: contractCall ? contract : undefined + }) + + const transaction = { + ...txDetails, + eventCode, + status, + contractCall: contract ? contractCall : undefined + } + + const emitterResult = emitter.emit(transaction) + + if (emitterResult) { + validateNotificationObject(emitterResult) + } + + handleTransactionEvent({ + transaction: transaction, + emitterResult + }) +} + +export function handleTransactionEvent(event) { + const { transaction, emitterResult } = event + const currentId = transaction.id + const transactionId = transaction.hash || transaction.txid + + // returns a boolean indicating whether this transaction state is a new state + // for an existing transaction or is a new transaction + const predicate = (txInState: TransactionData) => { + return ( + (txInState.id && txInState.id === currentId) || + txInState.hash === transaction.hash || + txInState.replaceHash === transaction.hash + ) + } + + // replace UUID used for pre-hash identitification with hash or txid(bitcoin) + if ( + (transactionId && + transactionId !== currentId && + transaction.eventCode === 'txSent') || + !currentId + ) { + transaction.id = transactionId + } + + transactions.updateQueue(transaction, predicate) + + if (transaction.replaceHash) { + // remove pending notification for replaceHash if exists, + // this happens is pending comes before speedup event + notifications.remove(transaction.replaceHash, 'txPool') + } + + // create notification if dev hasn't opted out + // and not connected to a local network + if (emitterResult !== false && !localNetwork(get(app).networkId)) { + const transactionObj = transactionQueue.find(predicate) + + if (transactionObj) { + createNotification(transactionObj, emitterResult) + } + } +} + +export function duplicateTransactionCandidate( + transaction: TransactionData, + contract: ContractCall +) { + const duplicate: TransactionData | undefined | boolean = + transactionQueue.find((tx: TransactionData) => { + if (contract && typeof tx.contractCall === 'undefined') return false + if (tx.status === 'confirmed' || tx.status === 'failed') return + + const sameMethod = contract + ? contract.methodName === + (tx.contractCall && tx.contractCall.methodName) + : true + + const sameParams = contract + ? argsEqual(contract.params, tx.contractCall && tx.contractCall.params) + : true + + const sameVal = tx.value == transaction.value + + const sameTo = contract + ? sameMethod + : tx.to && + tx.to.toLowerCase() === transaction.to && + transaction.to.toLowerCase() + + return sameMethod && sameParams && sameVal && sameTo + }) + + return duplicate +} + +export function preflightTransaction( + blocknative, + options: TransactionOptions, + emitter: Emitter +): Promise { + return new Promise((resolve, reject) => { + // wrap in set timeout to put to the end of the event queue + setTimeout(async () => { + const { + sendTransaction, + estimateGas, + gasPrice, + balance, + contractCall, + txDetails + } = options + + //=== if `balance` or `estimateGas` or `gasPrice` is not provided, + // then sufficient funds check is disabled === // + //=== if `txDetails` is not provided, + // then duplicate transaction check is disabled === // + //== if dev doesn't want notify to initiate the transaction + // and `sendTransaction` is not provided, + // then transaction rejected notification is disabled ==// + //=== to disable hints for `txAwaitingApproval`, + // `txConfirmReminder` or any other notification, + // then return false from listener functions ==// + + const [gas, price] = await gasEstimates(estimateGas, gasPrice) + const id = uuid() + const value = new BigNumber((txDetails && txDetails.value) || 0) + + const calculated = { + value: value.toString(10), + gas: gas && gas.toString(10), + gasPrice: price && price.toString(10) + } + + const txObject = txDetails + ? { + ...txDetails, + ...calculated, + id + } + : { ...calculated, id } + + // check sufficient balance if required parameters are available + if (balance && gas && price) { + const transactionCost = gas.times(price).plus(value) + + // if transaction cost is greater than the current balance + if (transactionCost.gt(new BigNumber(balance))) { + const eventCode = 'nsfFail' + + handlePreFlightEvent(blocknative, { + eventCode, + contractCall, + balance, + txDetails: txObject, + emitter + }) + + return reject('User has insufficient funds') + } + } + + // check if it is a duplicate transaction + if (txDetails && duplicateTransactionCandidate(txDetails, contractCall)) { + const eventCode = 'txRepeat' + + handlePreFlightEvent(blocknative, { + eventCode, + contractCall, + balance, + txDetails: txObject, + emitter + }) + } + + const { + txApproveReminderTimeout, + txStallPendingTimeout, + txStallConfirmedTimeout + } = get(app) + + // check previous transactions awaiting approval + if (transactionQueue.find(tx => tx.status === 'awaitingApproval')) { + const eventCode = 'txAwaitingApproval' + + handlePreFlightEvent(blocknative, { + eventCode, + contractCall, + balance, + txDetails: txObject, + emitter + }) + } + + // confirm reminder after timeout + setTimeout(() => { + const awaitingApproval = transactionQueue.find( + tx => tx.id === id && tx.status === 'awaitingApproval' + ) + + if (awaitingApproval) { + const eventCode = 'txConfirmReminder' + + handlePreFlightEvent(blocknative, { + eventCode, + contractCall, + balance, + txDetails: txObject, + emitter + }) + } + }, txApproveReminderTimeout) + + handlePreFlightEvent(blocknative, { + eventCode: 'txRequest', + status: 'awaitingApproval', + contractCall, + balance, + txDetails: txObject, + emitter + }) + + // if not provided with sendTransaction function, + // resolve with id so dev can initiate transaction + // dev will need to call notify.hash(txHash, id) with this id + // to link up the preflight with the postflight notifications + if (!sendTransaction) { + return resolve(id) + } + + // get result and handle errors + let hash + try { + hash = await sendTransaction() + } catch (error) { + const { eventCode, errorMsg } = extractMessageFromError(error) + + handlePreFlightEvent(blocknative, { + eventCode, + status: 'failed', + contractCall, + balance, + txDetails: txObject, + emitter + }) + + return reject(errorMsg) + } + + if (hash && typeof hash === 'string') { + const serverEmitter = blocknative.transaction(hash, id).emitter + + serverEmitter.on('all', (transaction: TransactionData) => { + const result = emitter.emit(transaction) + return result + }) + + // Check for pending stall status + setTimeout(() => { + const transaction = transactionQueue.find( + (tx: TransactionData) => tx.id === id + ) + if ( + transaction && + transaction.status === 'sent' && + blocknative._connected + ) { + const eventCode = 'txStallPending' + + handlePreFlightEvent(blocknative, { + eventCode, + contractCall, + balance, + txDetails: txObject, + emitter + }) + } + }, txStallPendingTimeout) + + // Check for confirmed stall status + setTimeout(() => { + const transaction = transactionQueue.find(tx => tx.id === id) + + if ( + transaction && + transaction.status === 'pending' && + blocknative._connected + ) { + const eventCode = 'txStallConfirmed' + + handlePreFlightEvent(blocknative, { + eventCode, + contractCall, + balance, + txDetails: txObject, + emitter + }) + } + }, txStallConfirmedTimeout) + + resolve(id) + } else { + reject( + 'sendTransaction function must resolve to a transaction hash that is of type String.' + ) + } + }, 10) + }) +} + +function gasEstimates( + gasFunc: () => Promise, + gasPriceFunc: () => Promise +) { + if (!gasFunc || !gasPriceFunc) { + return Promise.resolve([]) + } + + const gasProm = gasFunc() + if (!gasProm.then) { + throw new Error('The `estimateGas` function must return a Promise') + } + + const gasPriceProm = gasPriceFunc() + if (!gasPriceProm.then) { + throw new Error('The `gasPrice` function must return a Promise') + } + + return Promise.all([gasProm, gasPriceProm]) + .then(([gasResult, gasPriceResult]) => { + if (typeof gasResult !== 'string') { + throw new Error( + `The Promise returned from calling 'estimateGas' must resolve with a value of type 'string'. Received a value of: ${gasResult} with a type: ${typeof gasResult}` + ) + } + + if (typeof gasPriceResult !== 'string') { + throw new Error( + `The Promise returned from calling 'gasPrice' must resolve with a value of type 'string'. Received a value of: ${gasPriceResult} with a type: ${typeof gasPriceResult}` + ) + } + + return [new BigNumber(gasResult), new BigNumber(gasPriceResult)] + }) + .catch(error => { + throw new Error(`There was an error getting gas estimates: ${error}`) + }) +} diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 0df2d8f2a..428f3cc09 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -17,11 +17,13 @@ import type { state } from './store' import type en from './i18n/en.json' export interface InitOptions { + dappId?: string wallets: WalletInit[] chains: Chain[] appMetadata?: AppMetadata i18n?: i18nOptions accountCenter?: AccountCenterOptions + notify?: NotifyOptions } export interface OnboardAPI { @@ -95,6 +97,7 @@ export interface AppState { wallets: WalletState[] accountCenter: AccountCenter locale: Locale + notify: NotifyOptions } export type InternalState = { @@ -135,6 +138,7 @@ export type Action = | ResetStoreAction | UpdateAccountAction | UpdateAccountCenterAction + | UpdateNotifyAction | SetWalletModulesAction | SetLocaleAction @@ -166,6 +170,11 @@ export type UpdateAccountCenterAction = { payload: AccountCenter | Partial } +export type UpdateNotifyAction = { + type: 'update_notify' + payload: NotifyOptions | Partial +} + export type SetWalletModulesAction = { type: 'set_wallet_modules' payload: WalletModule[] @@ -181,3 +190,273 @@ export type ChainStyle = { icon: string color: string } + + + + + +import type { + BitcoinTransactionLog, + EthereumTransactionLog, + SDKError, + TransactionHandler +} from 'bnc-sdk/dist/types/src/interfaces' + +export interface NotifyInitOptions extends ConfigOptions { + dappId?: string + transactionHandler?: TransactionHandler + name?: string + apiUrl?: string + onerror?: ErrorHandler +} + +export type NotifyOptions = { + enabled: boolean + transactionHandler: TransactionHandler, + onerror?: ErrorHandler, // Handles error responses +} + +export type ErrorHandler = (error: SDKError) => void + +export interface TransactionEvent { + emitterResult: void | boolean | CustomNotificationObject + transaction: TransactionData +} + +export type System = 'bitcoin' | 'ethereum' + +export type TransactionEventCode = + | 'txSent' + | 'txPool' + | 'txConfirmed' + | 'txSpeedUp' + | 'txCancel' + | 'txFailed' + | 'txRequest' + | 'nsfFail' + | 'txRepeat' + | 'txAwaitingApproval' + | 'txConfirmReminder' + | 'txSendFail' + | 'txError' + | 'txUnderPriced' + | 'all' + +export interface TransactionData { + asset?: string + blockHash?: string + blockNumber?: number + contractCall?: ContractCall | DecodedContractCall + counterparty?: string + eventCode?: string + from?: string + gas?: string + gasPrice?: string + hash?: string + txid?: string + id?: string + input?: string + monitorId?: string + monitorVersion?: string + nonce?: number + replaceHash?: string + r?: string + s?: string + status?: string + to?: string + transactionIndex?: number + v?: string + value?: string | number + startTime?: number + watchedAddress?: string + originalHash?: string + direction?: string + system?: string + inputs?: BitcoinInputOutput[] + outputs?: BitcoinInputOutput[] + baseFeePerGasGwei?: number + maxPriorityFeePerGasGwei?: number + maxFeePerGasGwei?: number + gasPriceGwei?: number +} + +export type NotificationType = 'pending' | 'success' | 'error' | 'hint' + +export interface CustomNotificationObject { + type?: NotificationType + message?: string + autoDismiss?: number + onclick?: (event: any) => void + eventCode?: string + link?: string +} + +export interface BitcoinInputOutput { + address: string + value: string +} + +export interface NotificationObject { + id: string + type: NotificationType + key: string + startTime?: number + eventCode?: string + message: string + autoDismiss?: number +} + +export interface ContractCall { + methodName: string + params: string[] +} + +export interface DecodedContractCall { + contractAddress?: string + contractType?: string + params: object + methodName: string +} + +export interface AppStore { + version: string + dappId?: string + name?: string + networkId?: number + nodeSynced: boolean + onerror?: ErrorHandler + mobilePosition: 'bottom' | 'top' + desktopPosition: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight' + darkMode: boolean + txApproveReminderTimeout: number + txStallPendingTimeout: number + txStallConfirmedTimeout: number + clientLocale: string + notifyMessages: NotifyMessages +} + +export interface NotifyMessages { + [key: string]: LocaleMessages +} + +export interface LocaleMessages { + transaction: { + [key: string]: string + } + watched: { + [key: string]: string + } + time: { + [key: string]: string + } +} + +export interface TransactionOptions { + sendTransaction?: () => Promise + estimateGas?: () => Promise + gasPrice?: () => Promise + balance?: string + contractCall?: ContractCall + txDetails?: { + to?: string + from?: string + value: string + } +} + +export interface PreflightEvent { + eventCode: string + contractCall?: ContractCall + balance: string + txDetails?: { + to?: string + from?: string + value: string | number + } + emitter: Emitter + status?: string +} + +export interface UpdateNotification { + (notificationObject: CustomNotificationObject): { + dismiss: () => void + update: UpdateNotification + } +} + +export interface ConfigOptions { + system?: System + networkId?: number + mobilePosition?: 'bottom' | 'top' + desktopPosition?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight' + darkMode?: boolean + txApproveReminderTimeout?: number + txStallPendingTimeout?: number + txStallConfirmedTimeout?: number + notifyMessages?: NotifyMessages + clientLocale?: string +} + +export interface Hash { + (hash: string, id?: string): + | never + | { + details: BitcoinTransactionLog | EthereumTransactionLog + emitter: Emitter + } +} + +export interface Transaction { + (options: TransactionOptions): { result: Promise; emitter: Emitter } +} + +export interface NotifyAccount { + (address: string): never | { details: { address: string }; emitter: Emitter } +} + +export interface Unsubscribe { + (addressOrHash: string): void +} + +export interface Notification { + (notificationObject: CustomNotificationObject): { + dismiss: () => void + update: UpdateNotification + } +} + +export interface Config { + (options: ConfigOptions): void +} + +export interface API { + hash: Hash + transaction: Transaction + account: Account + unsubscribe: Unsubscribe + notification: Notification + config: Config +} + +export interface EmitterListener { + (state: TransactionData): boolean | void | CustomNotificationObject +} + +export interface Emitter { + listeners: { + [key: string]: EmitterListener + } + on: (eventCode: TransactionEventCode, listener: EmitterListener) => void + emit: (state: TransactionData) => boolean | void | CustomNotificationObject +} + +export interface NotificationDetails { + id: string + hash?: string + startTime: number + eventCode: string + direction?: string + counterparty?: string + value?: string + asset?: string +} diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 5dc9ab758..2cec90e3b 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -173,3 +173,156 @@ export function initializeWalletModules( return acc }, [] as WalletModule[]) } + + + + + +import type { + Emitter, + EmitterListener, + TransactionData, + TransactionEventCode +} from './types' + +export function argsEqual(args1: any, args2: any): boolean { + return JSON.stringify(args1) === JSON.stringify(args2) +} + +// will update object(merge new data) in list if it passes predicate, +// otherwise adds new object +export function replaceOrAdd( + list: any[], + predicate: (val: any) => boolean, + data: any +): any[] { + const clone = [...list] + const index = clone.findIndex(predicate) + + if (index !== -1) { + const { startTime, contractCall, status, id } = clone[index] + + // if current transaction is a speedup or cancel + // and new status is pending, ignore update + if ( + data.status === 'pending' && + (status === 'speedup' || status === 'cancel') + ) { + return clone + } + + const { startTime: serverStartTime } = data + const contractCallMerge = contractCall ? { ...contractCall } : {} + + clone[index] = { + ...data, + ...contractCallMerge, + startTime: startTime || serverStartTime, + id + } + return clone + } + + return [...list, data] +} + +export function extractMessageFromError(error: { + message: string + stack: string +}): { eventCode: string; errorMsg: string } { + if (!error.stack || !error.message) { + return { + eventCode: 'txError', + errorMsg: 'An unknown error occured' + } + } + + const message = error.stack || error.message + + if (message.includes('User denied transaction signature')) { + return { + eventCode: 'txSendFail', + errorMsg: 'User denied transaction signature' + } + } + + if (message.includes('transaction underpriced')) { + return { + eventCode: 'txUnderpriced', + errorMsg: 'Transaction is under priced' + } + } + + return { + eventCode: 'txError', + errorMsg: message + } +} + +export function createEmitter(): Emitter { + return { + listeners: {}, + on: function ( + eventCode: TransactionEventCode, + listener: EmitterListener + ): never | void { + // check if valid eventCode + switch (eventCode) { + case 'txSent': + case 'txPool': + case 'txConfirmed': + case 'txSpeedUp': + case 'txCancel': + case 'txFailed': + case 'txRequest': + case 'nsfFail': + case 'txRepeat': + case 'txAwaitingApproval': + case 'txConfirmReminder': + case 'txSendFail': + case 'txError': + case 'txUnderPriced': + case 'all': + break + default: + throw new Error( + `${eventCode} is not a valid event code, for a list of valid event codes see: https://github.com/blocknative/notify` + ) + } + + // check that listener is a function + if (typeof listener !== 'function') { + throw new Error('Listener must be a function') + } + + // add listener for the eventCode + this.listeners[eventCode] = listener + }, + emit: function (state: TransactionData) { + if (this.listeners[state.eventCode || '']) { + return this.listeners[state.eventCode || ''](state) + } + + if (this.listeners.all) { + return this.listeners.all(state) + } + } + } +} + +export function localNetwork(networkId: number) { + switch (networkId) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 42: + case 56: + case 100: + case 137: + return false + default: + return true + } +} diff --git a/packages/core/src/validation.ts b/packages/core/src/validation.ts index d83d8b593..9d27e47cf 100644 --- a/packages/core/src/validation.ts +++ b/packages/core/src/validation.ts @@ -7,7 +7,8 @@ import type { ConnectOptions, DisconnectOptions, ConnectOptionsString, - AccountCenter + AccountCenter, + NotifyOptions } from './types' const chainId = Joi.string().pattern(/^0x[0-9a-fA-F]+$/) @@ -111,6 +112,7 @@ const initOptions = Joi.object({ chains: chains.required(), appMetadata: appMetadata, i18n: Joi.object().unknown(), + dappId: Joi.string(), accountCenter: Joi.object({ desktop: Joi.object({ enabled: Joi.boolean(), @@ -120,6 +122,11 @@ const initOptions = Joi.object({ enabled: Joi.boolean(), position: accountCenterPosition }) + }), + notify: Joi.object({ + transactionHandler: Joi.function().required(), + enabled: Joi.boolean(), + onerror: Joi.function(), }) }) @@ -149,6 +156,12 @@ const accountCenter = Joi.object({ expanded: Joi.boolean() }) +const notify = Joi.object({ + transactionHandler: Joi.function().required(), + enabled: Joi.boolean(), + onerror: Joi.function(), +}) + type ValidateReturn = Joi.ValidationResult | null function validate(validator: Joi.Schema, data: unknown): ValidateReturn { @@ -199,6 +212,12 @@ export function validateAccountCenterUpdate( return validate(accountCenter, data) } +export function validateNotifyUpdate( + data: NotifyOptions | Partial +): ValidateReturn { + return validate(notify, data) +} + export function validateWalletInit(data: WalletInit[]): ValidateReturn { return validate(walletInit, data) } @@ -206,3 +225,511 @@ export function validateWalletInit(data: WalletInit[]): ValidateReturn { export function validateLocale(data: string): ValidateReturn { return validate(locale, data) } + + + + + +import type { + NotifyInitOptions, + TransactionOptions, + CustomNotificationObject, + ConfigOptions +} from './types' + +const validInitKeys = [ + 'dappId', + 'networkId', + 'system', + 'transactionHandler', + 'name', + 'onerror', + 'mobilePosition', + 'desktopPosition', + 'darkMode', + 'txApproveReminderTimeout', + 'txStallPendingTimeout', + 'txStallConfirmedTimeout', + 'notifyMessages', + 'clientLocale' +] + +const validNotificationKeys = [ + 'eventCode', + 'type', + 'message', + 'autoDismiss', + 'onclick', + 'link' +] + +const validTransactionKeys = [ + 'sendTransaction', + 'estimateGas', + 'gasPrice', + 'balance', + 'contractCall', + 'txDetails' +] + +function invalidParams( + params: any, + validParams: string[], + functionName: string +): void | never { + const invalid = Object.keys(params) + + if (invalid.length > 0) { + throw new Error( + `${ + invalid[0] + } is not a valid parameter for ${functionName}, must be one of the following valid parameters: ${validParams.join( + ', ' + )}` + ) + } +} + +export function validateType({ + name, + value, + type, + optional, + customValidation +}: { + name: string + value: any + type: string + optional?: boolean + customValidation?: (val: any) => void | never +}): never | void { + if (!optional && typeof value === 'undefined') { + throw new Error(`"${name}" is required`) + } + + if ( + typeof value !== 'undefined' && + (type === 'array' ? Array.isArray(type) : typeof value !== type) + ) { + throw new Error( + `"${name}" must be of type: ${type}, received type: ${typeof value} from value: ${value}` + ) + } + + if (typeof value !== 'undefined' && customValidation) { + customValidation(value) + } +} + +export function validateInit(init: NotifyInitOptions): void { + validateType({ name: 'init', value: init, type: 'object' }) + + const { + dappId, + system, + networkId, + transactionHandler, + name, + apiUrl, + onerror, + ...otherParams + } = init + + validateType({ + name: 'dappId', + value: dappId, + type: 'string', + optional: true + }) + + validateType({ + name: 'system', + value: system, + type: 'string', + // defaults to ethereum so optional + optional: true + }) + + // if no dappId provided then optional, otherwise required + validateType({ + name: 'networkId (if dappId provided)', + value: networkId, + type: 'number', + optional: !dappId + }) + + validateType({ name: 'name', value: name, type: 'string', optional: true }) + + validateType({ + name: 'apiUrl', + value: apiUrl, + type: 'string', + optional: true + }) + + validateType({ + name: 'transactionHandler', + value: transactionHandler, + type: 'function', + optional: true + }) + + validateType({ + name: 'onerror', + value: onerror, + type: 'function', + optional: true + }) + + validateConfig(otherParams) +} + +function stringOrNumber(val: string | number): boolean { + return typeof val === 'string' || typeof val === 'number' +} + +export function validateTransactionOptions(options: TransactionOptions): void { + validateType({ name: 'transaction options', value: options, type: 'object' }) + + const { + sendTransaction, + estimateGas, + gasPrice, + balance, + contractCall, + txDetails, + ...otherParams + } = options + + invalidParams(otherParams, validTransactionKeys, 'Transaction Options') + + validateType({ + name: 'sendTransaction', + value: sendTransaction, + type: 'function', + optional: true + }) + + validateType({ + name: 'estimateGas', + value: estimateGas, + type: 'function', + optional: true + }) + + validateType({ + name: 'gasPrice', + value: gasPrice, + type: 'function', + optional: true + }) + + validateType({ + name: 'balance', + value: balance, + type: 'string', + optional: true + }) + + validateType({ + name: 'contractCall', + value: contractCall, + type: 'object', + optional: true + }) + + if (contractCall) { + const { methodName, params, ...otherParams } = contractCall + invalidParams(otherParams, ['methodName', 'params'], 'contractCall') + + validateType({ + name: 'methodName', + value: methodName, + type: 'string', + optional: true + }) + + validateType({ + name: 'params', + value: params, + type: 'array', + optional: true + }) + } + + validateType({ + name: 'txDetails', + value: txDetails, + type: 'object', + optional: true + }) + + if (txDetails) { + const { to, value, from, ...otherParams } = txDetails + + invalidParams(otherParams, ['to', 'value', 'from'], 'txDetails') + + validateType({ + name: 'to', + value: to, + type: 'string', + optional: true, + customValidation: isAddress + }) + + if (typeof value !== 'undefined' && !stringOrNumber(value)) { + throw new Error( + `"value" must be of type: string | number, received type: ${typeof value} from value: ${value}` + ) + } + + validateType({ + name: 'from', + value: from, + type: 'string', + optional: true, + customValidation: isAddress + }) + } +} + +export function validateNotificationObject( + notification: CustomNotificationObject | boolean | undefined +): void { + validateType({ + name: 'notification', + value: notification, + type: 'object' + }) + + if (typeof notification !== 'object') return + + const { + eventCode, + type, + message, + autoDismiss, + onclick, + link, + ...otherParams + } = notification + + invalidParams(otherParams, validNotificationKeys, 'notification') + + validateType({ + name: 'eventCode', + value: eventCode, + type: 'string', + optional: true + }) + + validateType({ + name: 'type', + value: type, + type: 'string', + optional: true, + customValidation: validNotificationType + }) + + validateType({ + name: 'message', + value: message, + type: 'string' + }) + + validateType({ + name: 'autoDismiss', + value: autoDismiss, + type: 'number', + optional: true + }) + + validateType({ + name: 'onclick', + value: onclick, + type: 'function', + optional: true + }) + + validateType({ + name: 'link', + value: link, + type: 'string', + optional: true + }) +} + +export function validateConfig(config: ConfigOptions): void { + validateType({ name: 'config', value: config, type: 'object' }) + + const { + networkId, + system, + mobilePosition, + desktopPosition, + darkMode, + notifyMessages, + clientLocale, + txApproveReminderTimeout, + txStallPendingTimeout, + txStallConfirmedTimeout, + ...otherParams + } = config + + invalidParams(otherParams, validInitKeys, 'config / initialize') + + validateType({ + name: 'networkId', + value: networkId, + type: 'number', + optional: true + }) + + validateType({ + name: 'system', + value: system, + type: 'string', + optional: true + }) + + validateType({ + name: 'mobilePosition', + value: mobilePosition, + type: 'string', + optional: true, + customValidation: validMobilePosition + }) + + validateType({ + name: 'desktopPosition', + value: desktopPosition, + type: 'string', + optional: true, + customValidation: validDesktopPosition + }) + + validateType({ + name: 'darkMode', + value: darkMode, + type: 'boolean', + optional: true + }) + + validateType({ + name: 'notifyMessages', + value: notifyMessages, + type: 'object', + optional: true + }) + + if (notifyMessages) { + Object.keys(notifyMessages).forEach(locale => { + validateType({ + name: locale, + value: notifyMessages[locale], + type: 'object' + }) + + const { transaction, watched, time, ...otherParams } = notifyMessages[ + locale + ] + + invalidParams(otherParams, ['transaction', 'watched', 'time'], locale) + + validateType({ + name: `notifyMessages.${locale}.transaction`, + value: transaction, + type: 'object', + optional: true + }) + + validateType({ + name: `notifyMessages.${locale}.watched`, + value: watched, + type: 'object', + optional: true + }) + + validateType({ + name: `notifyMessages.${locale}.time`, + value: time, + type: 'object', + optional: true + }) + }) + } + + validateType({ + name: 'clientLocale', + value: clientLocale, + type: 'string', + optional: true + }) + + validateType({ + name: 'txApproveReminderTimeout', + value: txApproveReminderTimeout, + type: 'number', + optional: true + }) + + validateType({ + name: 'txStallPendingTimeout', + value: txStallPendingTimeout, + type: 'number', + optional: true + }) + + validateType({ + name: 'txStallConfirmedTimeout', + value: txStallConfirmedTimeout, + type: 'number', + optional: true + }) +} + +function validNotificationType(type: string): void | never { + switch (type) { + case 'hint': + case 'pending': + case 'error': + case 'success': + return + default: + throw new Error( + `${type} is not a valid notification type, must be one of: 'hint', 'pending', 'error' or 'success'.` + ) + } +} + +function validMobilePosition(position: string): void | never { + switch (position) { + case 'top': + case 'bottom': + return + default: + throw new Error( + `${position} is not a valid mobile notification position, must be one of: 'top' or 'bottom'.` + ) + } +} + +function validDesktopPosition(position: string): void | never { + switch (position) { + case 'bottomLeft': + case 'bottomRight': + case 'topLeft': + case 'topRight': + return + default: + throw new Error( + `${position} is not a valid desktop notification position, must be one of: 'bottomLeft', 'bottomRight', 'topLeft' or 'topRight'.` + ) + } +} + +function isAddress(address: string): void | never { + if (!/^(0x)?[0-9a-fA-F]{40}$/.test(address)) { + throw new Error(`${address} is not a valid ethereum address.`) + } +} diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index 6adbe1326..e533944f9 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -6,6 +6,7 @@ import SwitchChain from './chain/SwitchChain.svelte' import ActionRequired from './connect/ActionRequired.svelte' import AccountCenter from './account-center/Index.svelte' + import Notify from './notify/views/Notify.svelte'; const accountCenter$ = state .select('accountCenter') @@ -248,3 +249,7 @@ {#if $accountCenter$.enabled && $wallets$.length} {/if} + +{#if $accountCenter$.enabled && $wallets$.length} + +{/if} diff --git a/packages/core/src/views/notify/components/AutoDismiss.svelte b/packages/core/src/views/notify/components/AutoDismiss.svelte new file mode 100644 index 000000000..af8111a3c --- /dev/null +++ b/packages/core/src/views/notify/components/AutoDismiss.svelte @@ -0,0 +1,15 @@ + diff --git a/packages/core/src/views/notify/components/CloseIcon.svelte b/packages/core/src/views/notify/components/CloseIcon.svelte new file mode 100644 index 000000000..4d7e9cd29 --- /dev/null +++ b/packages/core/src/views/notify/components/CloseIcon.svelte @@ -0,0 +1,50 @@ + + + + +
(hovered = true)} + on:mouseleave={() => (hovered = false)}> + + + + + + +
diff --git a/packages/core/src/views/notify/components/NotificationContent.svelte b/packages/core/src/views/notify/components/NotificationContent.svelte new file mode 100644 index 000000000..82115d04e --- /dev/null +++ b/packages/core/src/views/notify/components/NotificationContent.svelte @@ -0,0 +1,93 @@ + + + + +
+ +

+

+
diff --git a/packages/core/src/views/notify/components/TypeIcon.svelte b/packages/core/src/views/notify/components/TypeIcon.svelte new file mode 100644 index 000000000..a25473816 --- /dev/null +++ b/packages/core/src/views/notify/components/TypeIcon.svelte @@ -0,0 +1,737 @@ + + + + +
+ {#if type === 'hint'} + + + + + + + + + + + + + {/if} + + {#if type === 'pending'} + + + + + + + + + + + + + + + {/if} + + {#if type === 'success'} + + + + + {/if} + + {#if type === 'error'} + + + + + + + + + + + {/if} +
diff --git a/packages/core/src/views/notify/elements/Clock.svelte b/packages/core/src/views/notify/elements/Clock.svelte new file mode 100644 index 000000000..8f65082d0 --- /dev/null +++ b/packages/core/src/views/notify/elements/Clock.svelte @@ -0,0 +1,37 @@ + + + + + + + diff --git a/packages/core/src/views/notify/elements/NotificationMessage.svelte b/packages/core/src/views/notify/elements/NotificationMessage.svelte new file mode 100644 index 000000000..f2adc00c0 --- /dev/null +++ b/packages/core/src/views/notify/elements/NotificationMessage.svelte @@ -0,0 +1,18 @@ + + + + +

+ {@html message} +

diff --git a/packages/core/src/views/notify/elements/Time.svelte b/packages/core/src/views/notify/elements/Time.svelte new file mode 100644 index 000000000..2b0aea74f --- /dev/null +++ b/packages/core/src/views/notify/elements/Time.svelte @@ -0,0 +1,17 @@ + + + + + + {time} + diff --git a/packages/core/src/views/notify/elements/Timer.svelte b/packages/core/src/views/notify/elements/Timer.svelte new file mode 100644 index 000000000..472ee31da --- /dev/null +++ b/packages/core/src/views/notify/elements/Timer.svelte @@ -0,0 +1,16 @@ + + + + + + {value} + diff --git a/packages/core/src/views/notify/views/Notify.svelte b/packages/core/src/views/notify/views/Notify.svelte new file mode 100644 index 000000000..5ac7db060 --- /dev/null +++ b/packages/core/src/views/notify/views/Notify.svelte @@ -0,0 +1,211 @@ + + + + +{#if $notifications.length > 0} +
    + {#each $notifications as notification (notification.key)} +
  • notification.onclick && notification.onclick(e)} + style={notificationMargin} + animate:flip={{ duration: 500 }} + class:bn-notify-dark-mode={$app.darkMode} + class:bn-notify-clickable={notification.onclick} + class="bn-notify-custom bn-notify-notification {`bn-notify-notification-${notification.type}`} + {$app.name ? `bn-notify-${$app.name}` : ''}" + in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} + out:fly={{ duration: 400, x, y, easing: quintIn }}> + {#if notification.link} + + + + + {:else} + + + {/if} +
    notifications.remove(notification.id, notification.eventCode)}> + +
    + +
  • + {/each} +
+{/if} diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock new file mode 100644 index 000000000..9e1b4c03f --- /dev/null +++ b/packages/core/yarn.lock @@ -0,0 +1,2710 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/highlight@^7.10.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@ethereumjs/common@2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.2.tgz#eb006c9329c75c80f634f340dc1719a5258244df" + integrity sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.4" + +"@ethersproject/abi@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" + integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== + dependencies: + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/abi@^5.5.0": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.2.tgz#f2956f2ac724cd720e581759d9e3840cd9744818" + integrity sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ== + dependencies: + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + +"@ethersproject/abstract-provider@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" + integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/networks" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/web" "^5.5.0" + +"@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" + integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== + dependencies: + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/web" "^5.6.0" + +"@ethersproject/abstract-signer@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" + integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + +"@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.6.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz#54df786bdf1aabe20d0ed508ec05e0aa2d06674f" + integrity sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q== + dependencies: + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/address@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" + integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + +"@ethersproject/address@^5.5.0", "@ethersproject/address@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" + integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== + dependencies: + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" + +"@ethersproject/base64@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" + integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + +"@ethersproject/base64@^5.5.0", "@ethersproject/base64@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" + integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== + dependencies: + "@ethersproject/bytes" "^5.6.0" + +"@ethersproject/basex@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" + integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + +"@ethersproject/basex@^5.5.0", "@ethersproject/basex@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" + integrity sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/bignumber@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" + integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + bn.js "^4.11.9" + +"@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@^5.6.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.1.tgz#d5e0da518eb82ab8d08ca9db501888bbf5f0c8fb" + integrity sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + bn.js "^4.11.9" + +"@ethersproject/bytes@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" + integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== + dependencies: + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/bytes@^5.5.0", "@ethersproject/bytes@^5.6.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/constants@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" + integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + +"@ethersproject/constants@^5.5.0", "@ethersproject/constants@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" + integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== + dependencies: + "@ethersproject/bignumber" "^5.6.0" + +"@ethersproject/contracts@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" + integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== + dependencies: + "@ethersproject/abi" "^5.5.0" + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + +"@ethersproject/hash@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" + integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== + dependencies: + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/hash@^5.5.0", "@ethersproject/hash@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" + integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== + dependencies: + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + +"@ethersproject/hdnode@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" + integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== + dependencies: + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/basex" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/pbkdf2" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/signing-key" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/wordlists" "^5.5.0" + +"@ethersproject/hdnode@^5.5.0", "@ethersproject/hdnode@^5.6.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.1.tgz#37fa1eb91f6e20ca39cc5fcb7acd3da263d85dab" + integrity sha512-6IuYDmbH5Bv/WH/A2cUd0FjNr4qTLAvyHAECiFZhNZp69pPvU7qIDwJ7CU7VAkwm4IVBzqdYy9mpMAGhQdwCDA== + dependencies: + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/basex" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/signing-key" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/wordlists" "^5.6.0" + +"@ethersproject/json-wallets@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" + integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== + dependencies: + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/hdnode" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/pbkdf2" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/random" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/json-wallets@^5.5.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" + integrity sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ== + dependencies: + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/hdnode" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" + integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== + dependencies: + "@ethersproject/bytes" "^5.5.0" + js-sha3 "0.8.0" + +"@ethersproject/keccak256@^5.5.0", "@ethersproject/keccak256@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" + integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== + dependencies: + "@ethersproject/bytes" "^5.6.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" + integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== + +"@ethersproject/logger@^5.5.0", "@ethersproject/logger@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== + +"@ethersproject/networks@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" + integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== + dependencies: + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.6.0": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.2.tgz#2bacda62102c0b1fcee408315f2bed4f6fbdf336" + integrity sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/pbkdf2@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" + integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + +"@ethersproject/pbkdf2@^5.5.0", "@ethersproject/pbkdf2@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" + integrity sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + +"@ethersproject/properties@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" + integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== + dependencies: + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/properties@^5.5.0", "@ethersproject/properties@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/providers@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.2.tgz#131ccf52dc17afd0ab69ed444b8c0e3a27297d99" + integrity sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/basex" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/networks" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/random" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/web" "^5.5.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/providers@5.5.3": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" + integrity sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/basex" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/networks" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/random" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/web" "^5.5.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" + integrity sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/random@^5.5.0", "@ethersproject/random@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" + integrity sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/rlp@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" + integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/rlp@^5.5.0", "@ethersproject/rlp@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" + integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/sha2@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" + integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + hash.js "1.1.7" + +"@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" + integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" + integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/signing-key@^5.5.0", "@ethersproject/signing-key@^5.6.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.1.tgz#31b0a531520616254eb0465b9443e49515c4d457" + integrity sha512-XvqQ20DH0D+bS3qlrrgh+axRMth5kD1xuvqUQUTeezxUTXBOeR6hWz2/C6FBEu39FRytyybIWrYf7YLSAKr1LQ== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" + integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/strings@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" + integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/strings@^5.5.0", "@ethersproject/strings@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" + integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/transactions@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" + integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== + dependencies: + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ethersproject/signing-key" "^5.5.0" + +"@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" + integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== + dependencies: + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" + "@ethersproject/signing-key" "^5.6.0" + +"@ethersproject/units@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" + integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== + dependencies: + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + +"@ethersproject/wallet@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" + integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/hdnode" "^5.5.0" + "@ethersproject/json-wallets" "^5.5.0" + "@ethersproject/keccak256" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/random" "^5.5.0" + "@ethersproject/signing-key" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/wordlists" "^5.5.0" + +"@ethersproject/web@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" + integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== + dependencies: + "@ethersproject/base64" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/web@^5.5.0", "@ethersproject/web@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" + integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== + dependencies: + "@ethersproject/base64" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + +"@ethersproject/wordlists@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" + integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== + dependencies: + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + +"@ethersproject/wordlists@^5.5.0", "@ethersproject/wordlists@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" + integrity sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + +"@formatjs/ecma402-abstract@1.11.4": + version "1.11.4" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda" + integrity sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw== + dependencies: + "@formatjs/intl-localematcher" "0.2.25" + tslib "^2.1.0" + +"@formatjs/fast-memoize@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz#e6f5aee2e4fd0ca5edba6eba7668e2d855e0fc21" + integrity sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg== + dependencies: + tslib "^2.1.0" + +"@formatjs/icu-messageformat-parser@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz#a54293dd7f098d6a6f6a084ab08b6d54a3e8c12d" + integrity sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw== + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + "@formatjs/icu-skeleton-parser" "1.3.6" + tslib "^2.1.0" + +"@formatjs/icu-skeleton-parser@1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964" + integrity sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg== + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + tslib "^2.1.0" + +"@formatjs/intl-localematcher@0.2.25": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a" + integrity sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA== + dependencies: + tslib "^2.1.0" + +"@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@niceties/logger@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@niceties/logger/-/logger-1.1.3.tgz#f560e9e12c7d3c946d369ee1f9a5668a2767c95f" + integrity sha512-OdqmQMMvCiMFiHcjqhsw2D07mwNsqVQEKVbi5J2XrRX5gWPRVnEzp0nF0dtcSwfWOS8oyIHs7Z7b+x2q73sgPA== + dependencies: + kleur "^4.1.4" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@rollup-extras/plugin-copy@~1.2.2": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rollup-extras/plugin-copy/-/plugin-copy-1.2.5.tgz#f24faa1cab4d6eeb7b2f3f0fb25c570323f35318" + integrity sha512-AhfFUh0MYgW+VVRGNy1KsobCFy1AdibHBBLvhTQdAAdXuZ5cAQemtZve4wBTP/xJf8ODf8xyAzS5uVhkFD12oA== + dependencies: + "@niceties/logger" "^1.1.3" + "@rollup-extras/utils" "^1.2.3" + "@types/glob" "^7.2.0" + "@types/glob-parent" "^5.1.1" + glob "^7.2.0" + glob-parent "^6.0.2" + glob-promise "^4.2.2" + +"@rollup-extras/utils@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rollup-extras/utils/-/utils-1.2.3.tgz#babca15a776dfd452d3a4be8268d3cc30b747247" + integrity sha512-P1hLRkaXjs/iU1y2zcGkXCAbe5eDNlyvz/KwztVBgqxxqyRORjjHfIQA9orhsB4QoAfvpDVKKU6Bfu4NBX4SBg== + dependencies: + "@niceties/logger" "^1.1.3" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^11.0.0": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-3.1.0.tgz#d31e3a90c6b47064f3c9f2ce0ded5bcf0d3b82f6" + integrity sha512-pA3XRUrSKybVYqmH5TqWNZpGxF+VV+1GrYchKgCNIj2vsSOX7CVm2RCtx8p2nrC7xvkziYyK+lSi74T93MU3YA== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/plugin-typescript@^8.0.0": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.3.2.tgz#e1b719e2ed3e752bbc092001656c48378f2d15f0" + integrity sha512-MtgyR5LNHZr3GyN0tM7gNO9D0CS+Y+vflS4v/PHmrX17JCkHUYKvQ5jN5o3cz1YKllM3duXUqu3yOHwMPUxhDg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@tsconfig/svelte@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/svelte/-/svelte-2.0.1.tgz#0e8d7caa693e9b2afce5e622c0475bb0fd89c12c" + integrity sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A== + +"@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob-parent@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/glob-parent/-/glob-parent-5.1.1.tgz#eb83d64824374495437b450d45e24ec53a7ce844" + integrity sha512-r2rwLjU4mYJmX3S81d8KxCboZOGPVEN5hvtYKzQ0aFNRhYir3DIVf8Hlznr65Wk748swi6hhccsDo3MyydHb2A== + +"@types/glob@^7.1.3", "@types/glob@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/json-schema@^7.0.7": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/lodash.merge@^4.6.6": + version "4.6.7" + resolved "https://registry.yarnpkg.com/@types/lodash.merge/-/lodash.merge-4.6.7.tgz#0af6555dd8bc6568ef73e5e0d820a027362946b1" + integrity sha512-OwxUJ9E50gw3LnAefSHJPHaBLGEKmQBQ7CZe/xflHkyy/wH2zVyEIAKReHvVrrn7zKdF58p16We9kMfh7v0RRQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash.partition@^4.6.6": + version "4.6.7" + resolved "https://registry.yarnpkg.com/@types/lodash.partition/-/lodash.partition-4.6.7.tgz#7c4bcfa30e2cd945466401855eb5593a848fadff" + integrity sha512-tRAQtiQkNfMLPInsv+o/3vXR/YUj8YaqzFh/bdlTdVYvuydU817+dX/dM7N7sQWMQ2PgF4ziHILuvlvW4aHnnw== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.182" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" + integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*": + version "17.0.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" + integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/pug@^2.0.4": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" + integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/sass@^1.16.0": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" + integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^4.31.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.31.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + dependencies: + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" + +"@web3-onboard/common@^2.0.7": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.0.9.tgz#b53bf12f8a644f55fe8b09c5deb73531c2b90e9c" + integrity sha512-6qTIPAmLAkhcVPtSOyIUzscJ/rq3/xI42kVt8I4ZsUErd32QjhuydIndJJHWrEFAXT/6ZY6tFH2GZix9Fe8YzQ== + dependencies: + "@ethereumjs/common" "2.6.2" + ethers "5.5.4" + joi "^17.4.2" + rxjs "^7.5.2" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +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" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.2, bn.js@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bnc-sdk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.2.0.tgz#cabc70eaf4a49dd2f695c6fcee50c833aa2af6b2" + integrity sha512-uoe40jLL+eYxeCAOqLgWLOowU9kyUuXyLURVgSSfIBjUNuszlz+I2wZYtvdWF+YkYphSr7L3E6WFtmwFrne+Pw== + dependencies: + crypto-es "^1.2.2" + nanoid "^3.3.1" + rxjs "^6.6.3" + sturdy-websocket "^0.1.12" + +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-crc32@^0.2.5: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.4.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-es@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" + integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== + +debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +elliptic@6.5.4, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +es6-promise@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.3.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-plugin-svelte3@^3.2.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz#3618700333c8f8f12e28aec93bf18440d44a61fd" + integrity sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-util@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" + integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.3.tgz#1e361516711c0c3244b6210e7e3ecabf0c75fca0" + integrity sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g== + dependencies: + "@ethersproject/abi" "5.5.0" + "@ethersproject/abstract-provider" "5.5.1" + "@ethersproject/abstract-signer" "5.5.0" + "@ethersproject/address" "5.5.0" + "@ethersproject/base64" "5.5.0" + "@ethersproject/basex" "5.5.0" + "@ethersproject/bignumber" "5.5.0" + "@ethersproject/bytes" "5.5.0" + "@ethersproject/constants" "5.5.0" + "@ethersproject/contracts" "5.5.0" + "@ethersproject/hash" "5.5.0" + "@ethersproject/hdnode" "5.5.0" + "@ethersproject/json-wallets" "5.5.0" + "@ethersproject/keccak256" "5.5.0" + "@ethersproject/logger" "5.5.0" + "@ethersproject/networks" "5.5.2" + "@ethersproject/pbkdf2" "5.5.0" + "@ethersproject/properties" "5.5.0" + "@ethersproject/providers" "5.5.2" + "@ethersproject/random" "5.5.1" + "@ethersproject/rlp" "5.5.0" + "@ethersproject/sha2" "5.5.0" + "@ethersproject/signing-key" "5.5.0" + "@ethersproject/solidity" "5.5.0" + "@ethersproject/strings" "5.5.0" + "@ethersproject/transactions" "5.5.0" + "@ethersproject/units" "5.5.0" + "@ethersproject/wallet" "5.5.0" + "@ethersproject/web" "5.5.1" + "@ethersproject/wordlists" "5.5.0" + +ethers@5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.4.tgz#e1155b73376a2f5da448e4a33351b57a885f4352" + integrity sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw== + dependencies: + "@ethersproject/abi" "5.5.0" + "@ethersproject/abstract-provider" "5.5.1" + "@ethersproject/abstract-signer" "5.5.0" + "@ethersproject/address" "5.5.0" + "@ethersproject/base64" "5.5.0" + "@ethersproject/basex" "5.5.0" + "@ethersproject/bignumber" "5.5.0" + "@ethersproject/bytes" "5.5.0" + "@ethersproject/constants" "5.5.0" + "@ethersproject/contracts" "5.5.0" + "@ethersproject/hash" "5.5.0" + "@ethersproject/hdnode" "5.5.0" + "@ethersproject/json-wallets" "5.5.0" + "@ethersproject/keccak256" "5.5.0" + "@ethersproject/logger" "5.5.0" + "@ethersproject/networks" "5.5.2" + "@ethersproject/pbkdf2" "5.5.0" + "@ethersproject/properties" "5.5.0" + "@ethersproject/providers" "5.5.3" + "@ethersproject/random" "5.5.1" + "@ethersproject/rlp" "5.5.0" + "@ethersproject/sha2" "5.5.0" + "@ethersproject/signing-key" "5.5.0" + "@ethersproject/solidity" "5.5.0" + "@ethersproject/strings" "5.5.0" + "@ethersproject/transactions" "5.5.0" + "@ethersproject/units" "5.5.0" + "@ethersproject/wallet" "5.5.0" + "@ethersproject/web" "5.5.1" + "@ethersproject/wordlists" "5.5.0" + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-promise@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + +glob@^7.1.3, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.6.0, globals@^13.9.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + dependencies: + type-fest "^0.20.2" + +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + +globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +graceful-fs@^4.1.3: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +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= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +intl-messageformat@^9.3.15: + version "9.13.0" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.13.0.tgz#97360b73bd82212e4f6005c712a4a16053165468" + integrity sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw== + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + "@formatjs/fast-memoize" "1.2.1" + "@formatjs/icu-messageformat-parser" "2.1.0" + tslib "^2.1.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +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= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +joi@17.6.0, joi@^17.4.2: + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +keccak@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +kleur@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" + integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.partition@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.partition/-/lodash.partition-4.6.0.tgz#a38e46b73469e0420b0da1212e66d414be364ba4" + integrity sha1-o45GtzRp4EILDaEhLmbUFL42S6Q= + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +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= + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-gyp-build@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-plugin-svelte@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz#ecfa4fe824238a4466a3497df1a96d15cf43cabb" + integrity sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA== + +prettier@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.17.0, resolve@^1.19.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.5.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +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" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rollup-plugin-svelte@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz#d45f2b92b1014be4eb46b55aa033fb9a9c65f04d" + integrity sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg== + dependencies: + require-relative "^0.8.7" + rollup-pluginutils "^2.8.2" + +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^2.3.4: + version "2.73.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.73.0.tgz#128fef4b333fd92d02d6929afbb6ee38d7feb32d" + integrity sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.6.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +rxjs@^7.5.2: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== + dependencies: + tslib "^2.1.0" + +sade@^1.7.4: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sander@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" + integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= + dependencies: + es6-promise "^3.1.2" + graceful-fs "^4.1.3" + mkdirp "^0.5.1" + rimraf "^2.5.2" + +scrypt-js@3.0.1, scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +semver@^7.2.1, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +sorcery@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" + integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc= + dependencies: + buffer-crc32 "^0.2.5" + minimist "^1.2.0" + sander "^0.5.0" + sourcemap-codec "^1.3.0" + +sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +sturdy-websocket@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" + integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== + dependencies: + lodash.defaults "^4.2.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svelte-check@^2.2.6: + version "2.7.1" + resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-2.7.1.tgz#ecb89d11fcd67a46e750dba289fffb17e7597ddd" + integrity sha512-vHVu2+SQ6ibt77iTQaq2oiOjBgGL48qqcg0ZdEOsP5pPOjgeyR9QbnaEdzdBs9nsVYBc/42haKtzb2uFqS8GVw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.9" + chokidar "^3.4.1" + fast-glob "^3.2.7" + import-fresh "^3.2.1" + picocolors "^1.0.0" + sade "^1.7.4" + svelte-preprocess "^4.0.0" + typescript "*" + +svelte-i18n@^3.3.13: + version "3.4.0" + resolved "https://registry.yarnpkg.com/svelte-i18n/-/svelte-i18n-3.4.0.tgz#75838fba5bc680e39b421bb5c33fc3463aaa85f4" + integrity sha512-590N+YIRlebDT3fXmuAxd4guQZLR3vm4kCs5UhWYmw3SxOlJNZ7HwYYiw6d4jDr7P+Cx7DSopk1Z1K9wn8B6EA== + dependencies: + deepmerge "^4.2.2" + estree-walker "^2.0.1" + intl-messageformat "^9.3.15" + sade "^1.7.4" + tiny-glob "^0.2.6" + +svelte-preprocess@^4.0.0, svelte-preprocess@^4.9.4: + version "4.10.6" + resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz#5f9a53e7ed3b85fc7e0841120c725b76ac5a1ba8" + integrity sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ== + dependencies: + "@types/pug" "^2.0.4" + "@types/sass" "^1.16.0" + detect-indent "^6.0.0" + magic-string "^0.25.7" + sorcery "^0.10.0" + strip-indent "^3.0.0" + +svelte@^3.46.4: + version "3.48.0" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.48.0.tgz#f98c866d45e155bad8e1e88f15f9c03cd28753d3" + integrity sha512-fN2YRm/bGumvjUpu6yI3BpvZnpIm9I6A7HR4oUNYd7ggYyIwSA/BX7DJ+UXXffLp6XNcUijyLvttbPVCYa/3xQ== + +table@^6.0.9: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +tiny-glob@^0.2.6: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript@*, typescript@^4.5.5: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/yarn.lock b/yarn.lock index 3ae45bd0e..52e6d47ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -790,6 +790,17 @@ google-protobuf "^3.7.0-rc.2" pbjs "^0.0.5" +"@keystonehq/base-eth-keyring@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.3.2.tgz#71efe1495d4931fab5fd0016c8722fe5d9657da9" + integrity sha512-y/kv8XNRSzqcSl7fvZklBKr4MVir1OJHzqM5vC+3yvzkh3mVtN8vUjAAxHtmVVVyM8rsdqK7aYZ7paexYdpnag== + dependencies: + "@ethereumjs/tx" "3.0.0" + "@keystonehq/bc-ur-registry-eth" "^0.7.7" + ethereumjs-util "^7.0.8" + hdkey "^2.0.1" + uuid "^8.3.2" + "@keystonehq/base-eth-keyring@^0.6.0-alpha.1": version "0.6.0-alpha.1" resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.0-alpha.1.tgz#ff19689eb07a54aefdc21394a51c117660f7a0d2" @@ -811,6 +822,25 @@ hdkey "^2.0.1" uuid "^8.3.2" +"@keystonehq/bc-ur-registry-eth@^0.7.7": + version "0.7.7" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.7.7.tgz#45267510900049050ef860a1e78fde9087b75972" + integrity sha512-2gZf18ogSCLjsn3PxGqwiOMz/G11v7byRnTLv5/wNJGzCqkMf86OKaVbUgsVokq0B5KAZtpCFQxj96rrFhPRiQ== + dependencies: + "@keystonehq/bc-ur-registry" "^0.4.4" + ethereumjs-util "^7.0.8" + hdkey "^2.0.1" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry@^0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.4.4.tgz#3073fdd4b33cdcbd04526a313a7685891a4b4583" + integrity sha512-SBdKdAZfp3y14GTGrKjfJJHf4iXObjcm4/qKUZ92lj8HVR8mxHHGmHksjE328bJPTAsJPloLix4rTnWg+qgS2w== + dependencies: + "@ngraveio/bc-ur" "^1.1.5" + base58check "^2.0.0" + tslib "^2.3.0" + "@keystonehq/bc-ur-registry@^0.5.0-alpha.5": version "0.5.0-alpha.6" resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.0-alpha.6.tgz#56868a7deeeaf5315a7fff6c0b42f3d31555a5c2" @@ -820,6 +850,21 @@ base58check "^2.0.0" tslib "^2.3.0" +"@keystonehq/eth-keyring@^0.11.2-alpha.2": + version "0.11.2" + resolved "https://registry.yarnpkg.com/@keystonehq/eth-keyring/-/eth-keyring-0.11.2.tgz#92b2d54b82cb107170a34592fa923bce28051493" + integrity sha512-2fuO/8PdWTcXIyPK0jI1nNG0mj9x3c1wcsob7dUcwiHme5yDMUb1OX9vPfSD0TCiYJYLOzuU6WDL9s6d/lWGOg== + dependencies: + "@ethereumjs/tx" "3.0.0" + "@keystonehq/base-eth-keyring" "^0.3.2" + "@keystonehq/bc-ur-registry-eth" "^0.7.7" + "@keystonehq/sdk" "^0.9.1" + "@metamask/obs-store" "^7.0.0" + bs58check "^2.1.2" + ethereumjs-util "^7.0.8" + hdkey "^2.0.1" + uuid "^8.3.2" + "@keystonehq/eth-keyring@^0.14.0-alpha.10.3": version "0.14.0-alpha.10.3" resolved "https://registry.yarnpkg.com/@keystonehq/eth-keyring/-/eth-keyring-0.14.0-alpha.10.3.tgz#c2959dfe1ebc8e9eb83612f817a5e01535d7c0c8" @@ -849,6 +894,19 @@ rxjs "^6.6.3" typescript "^4.6.2" +"@keystonehq/sdk@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@keystonehq/sdk/-/sdk-0.9.1.tgz#d1084c967118046257b720fedd8fbe8bb845a1c7" + integrity sha512-tcKDvKQVoe/2tibsjF/19VQhq1vldC+DyhC30lA9XJbbh5tXSoNfqqUVbMvDqxino/vBHZQur6rDSHF8+KBoMw== + dependencies: + "@ngraveio/bc-ur" "^1.0.0" + qrcode.react "^1.0.1" + react "16.13.1" + react-dom "16.13.1" + react-modal "^3.12.1" + react-qr-reader "^2.2.1" + rxjs "^6.6.3" + "@ledgerhq/cryptoassets@^6.25.0": version "6.25.0" resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-6.25.0.tgz#9e9307c69c436c938fafd27d5351526c21a2a114" @@ -1935,6 +1993,82 @@ dependencies: "@walletconnect/window-getters" "^1.0.0" +"@web3-onboard/common@^2.0.7": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.0.9.tgz#b53bf12f8a644f55fe8b09c5deb73531c2b90e9c" + integrity sha512-6qTIPAmLAkhcVPtSOyIUzscJ/rq3/xI42kVt8I4ZsUErd32QjhuydIndJJHWrEFAXT/6ZY6tFH2GZix9Fe8YzQ== + dependencies: + "@ethereumjs/common" "2.6.2" + ethers "5.5.4" + joi "^17.4.2" + rxjs "^7.5.2" + +"@web3-onboard/core@^2.2.7": + version "2.2.8" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.2.8.tgz#0a2c6aa991ea2ac0a0a471d5ee3bbf84aafd79df" + integrity sha512-nEEQR0/EyMbtMOz2yngyr992ElbYlICm7tZOwKfvq4nknGdnkEVmx74nr80H5M6/9nfZ5gJug2v8i/M3/YxcbQ== + dependencies: + "@web3-onboard/common" "^2.0.7" + bowser "^2.11.0" + ethers "5.5.3" + eventemitter3 "^4.0.7" + joi "17.6.0" + lodash.merge "^4.6.2" + lodash.partition "^4.6.0" + rxjs "^7.5.2" + svelte "^3.46.4" + svelte-i18n "^3.3.13" + +"@web3-onboard/keepkey@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@web3-onboard/keepkey/-/keepkey-2.0.3.tgz#c7a0e9242385a7ce54d7314cd402caa63751c988" + integrity sha512-q6lSTujDCc22xTejpdT44jna7ZQQBbN4YEywush+iimq9ZBP9AcNqnddxtfqZvG1R3nssPFmpO/i5w0DVpL11A== + dependencies: + "@ethersproject/providers" "^5.5.0" + "@shapeshiftoss/hdwallet-core" "^1.15.2" + "@shapeshiftoss/hdwallet-keepkey-webusb" "^1.15.2" + "@web3-onboard/common" "^2.0.7" + ethereumjs-util "^7.1.3" + +"@web3-onboard/keystone@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@web3-onboard/keystone/-/keystone-2.0.3.tgz#da34e53f3a982d5954101e1e223c589d79afbd65" + integrity sha512-FWnBMoiJmKb0ZVCCns3OoQEMh2heM8RPkZ/pnEBnKKVZg2YDyefDmr5QqYR6Zlb3x6wgP/uq2brBlbPpoH/SLg== + dependencies: + "@ethereumjs/tx" "^3.4.0" + "@ethersproject/providers" "^5.5.0" + "@keystonehq/eth-keyring" "^0.11.2-alpha.2" + "@web3-onboard/common" "^2.0.7" + +"@web3-onboard/ledger@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.0.4.tgz#306952ddce5b17c25de3e9643465083d28281218" + integrity sha512-eRh9C9/+c7Kkgk6TsSMNz1n31X5SLIn8Ip4cnxo8/z2/jS1I/KRpiKsUPXRF2X0EL0A3yhk0aCeiJR9+70sFqQ== + dependencies: + "@ethereumjs/tx" "^3.4.0" + "@ethersproject/providers" "^5.5.0" + "@ledgerhq/hw-app-eth" "^6.19.0" + "@ledgerhq/hw-transport-u2f" "^5.36.0-deprecated" + "@ledgerhq/hw-transport-webusb" "^6.19.0" + "@metamask/eth-sig-util" "^4.0.0" + "@web3-onboard/common" "^2.0.7" + buffer "^6.0.3" + ethereumjs-util "^7.1.3" + +"@web3-onboard/trezor@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@web3-onboard/trezor/-/trezor-2.0.5.tgz#9d381b05abc7861e2b2ed9283fcb04296f09b33b" + integrity sha512-ES7p7Tub5GoW/AjC8McIWsIOTKXO3NkkLjPS/VcBGslp5HM+KdRn3xmBGlGU6wQ4VGYQh66A8BJzd+27QGB7tA== + dependencies: + "@ethereumjs/tx" "^3.4.0" + "@ethersproject/providers" "^5.5.0" + "@web3-onboard/common" "^2.0.7" + buffer "^6.0.3" + eth-crypto "^2.1.0" + ethereumjs-util "^7.1.3" + hdkey "^2.0.1" + trezor-connect "^8.2.6" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -2670,6 +2804,16 @@ bnb-javascript-sdk-nobroadcast@^2.16.14: uuid "^3.3.2" websocket-stream "^5.5.0" +bnc-sdk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.2.0.tgz#cabc70eaf4a49dd2f695c6fcee50c833aa2af6b2" + integrity sha512-uoe40jLL+eYxeCAOqLgWLOowU9kyUuXyLURVgSSfIBjUNuszlz+I2wZYtvdWF+YkYphSr7L3E6WFtmwFrne+Pw== + dependencies: + crypto-es "^1.2.2" + nanoid "^3.3.1" + rxjs "^6.6.3" + sturdy-websocket "^0.1.12" + body-parser@1.19.2, body-parser@^1.16.0: version "1.19.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" @@ -3399,6 +3543,11 @@ crypto-browserify@3.12.0, crypto-browserify@^3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-es@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" + integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== + crypto-js@^3.1.9-1: version "3.3.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" @@ -6201,6 +6350,11 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -6644,6 +6798,11 @@ nanoid@^3.2.0: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8541,6 +8700,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +sturdy-websocket@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" + integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== + dependencies: + lodash.defaults "^4.2.0" + superstruct@^0.10.12: version "0.10.13" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.10.13.tgz#705535a5598ff231bd976601a7b6b534a71a821b" From 88be97f6a02ab092171d4afe591f66bcce9e9a34 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Thu, 19 May 2022 12:41:30 -0600 Subject: [PATCH 002/108] Styling notification --- packages/core/package.json | 1 - packages/core/src/constants.ts | 3 + packages/core/src/index.ts | 19 +- packages/core/src/notifications.ts | 2 +- packages/core/src/notify.ts | 613 +++++++-------- packages/core/src/store/index.ts | 8 +- packages/core/src/stores.ts | 192 ++--- packages/core/src/types.ts | 11 +- packages/core/src/validation.ts | 3 +- packages/core/src/views/Index.svelte | 9 +- packages/core/src/views/notify/Index.svelte | 246 ++++++ .../notify/components/AutoDismiss.svelte | 15 - .../views/notify/components/CloseIcon.svelte | 50 -- .../components/NotificationContent.svelte | 93 --- .../views/notify/components/TypeIcon.svelte | 737 ------------------ .../src/views/notify/elements/Clock.svelte | 37 - .../elements/NotificationMessage.svelte | 18 - .../src/views/notify/elements/Time.svelte | 17 - .../src/views/notify/elements/Timer.svelte | 16 - .../core/src/views/notify/views/Notify.svelte | 211 ----- packages/core/yarn.lock | 41 +- packages/demo/src/App.svelte | 7 +- 22 files changed, 692 insertions(+), 1657 deletions(-) create mode 100644 packages/core/src/views/notify/Index.svelte delete mode 100644 packages/core/src/views/notify/components/AutoDismiss.svelte delete mode 100644 packages/core/src/views/notify/components/CloseIcon.svelte delete mode 100644 packages/core/src/views/notify/components/NotificationContent.svelte delete mode 100644 packages/core/src/views/notify/components/TypeIcon.svelte delete mode 100644 packages/core/src/views/notify/elements/Clock.svelte delete mode 100644 packages/core/src/views/notify/elements/NotificationMessage.svelte delete mode 100644 packages/core/src/views/notify/elements/Time.svelte delete mode 100644 packages/core/src/views/notify/elements/Timer.svelte delete mode 100644 packages/core/src/views/notify/views/Notify.svelte diff --git a/packages/core/package.json b/packages/core/package.json index 97a7db321..86b32dd5c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -42,7 +42,6 @@ }, "dependencies": { "@web3-onboard/common": "^2.0.7", - "bnc-sdk": "^4.2.0", "bowser": "^2.11.0", "ethers": "5.5.3", "eventemitter3": "^4.0.7", diff --git a/packages/core/src/constants.ts b/packages/core/src/constants.ts index 24b59c5c1..e05afb951 100644 --- a/packages/core/src/constants.ts +++ b/packages/core/src/constants.ts @@ -9,6 +9,9 @@ export const APP_INITIAL_STATE: AppState = { position: 'topRight', expanded: false }, + notify: { + enabled: true, + }, locale: '' } diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 18a09a0d3..46e3e9b26 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -54,7 +54,15 @@ function init(options: InitOptions): OnboardAPI { } } - const { wallets, chains, appMetadata = null, i18n, accountCenter, notify } = options + const { + wallets, + chains, + appMetadata = null, + i18n, + accountCenter, + notify, + dappId + } = options initI18N(i18n) addChains(chains) @@ -75,8 +83,10 @@ function init(options: InitOptions): OnboardAPI { let notifyUpdate - if (typeof notify !== 'undefined' && notify.desktop) { - notifyUpdate = notify.desktop + if (notify && notify.enabled && !dappId) { + notifyUpdate = { + enabled: false + } } notifyUpdate && updateNotify(notifyUpdate) @@ -197,6 +207,9 @@ function mountApp() { /* BORDER RADIUS */ --border-radius-1: 24px; + --border-radius-2: 20px; + --border-radius-3: 16px; + --border-radius-4: 12px; /* SHADOWS */ --shadow-0: none; diff --git a/packages/core/src/notifications.ts b/packages/core/src/notifications.ts index 4ed6900b0..c3d838acc 100644 --- a/packages/core/src/notifications.ts +++ b/packages/core/src/notifications.ts @@ -1,7 +1,7 @@ import { _ } from 'svelte-i18n' import BigNumber from 'bignumber.js' import { notifications } from './stores' -import { eventToType, typeToDismissTimeout } from './notifyDefaults' +import { eventToType, typeToDismissTimeout } from './notifyDefaultsfaults' import { defaultNotifyMessages } from './i18n' import type { diff --git a/packages/core/src/notify.ts b/packages/core/src/notify.ts index 9ad0b7a3f..ec95b8157 100644 --- a/packages/core/src/notify.ts +++ b/packages/core/src/notify.ts @@ -1,306 +1,307 @@ -import 'regenerator-runtime/runtime' -import BlocknativeSdk from 'bnc-sdk' -import type { TransactionHandler } from 'bnc-sdk/dist/types/src/interfaces' -import { get } from 'svelte/store' - -import uuid from 'uuid/v4' -import { locale, dictionary, getClientLocale } from 'svelte-i18n' - -import Notify from './views/notify/views/Notify.svelte' - -import { app, notifications } from './stores' -import { handleTransactionEvent, preflightTransaction } from './transactions' -import { createNotification } from './notifications' - -import type { - NotifyInitOptions, - AppStore, - API, - Emitter, - TransactionOptions, - CustomNotificationObject, - UpdateNotification, - ConfigOptions, - LocaleMessages -} from './types' - -export { - NotifyInitOptions, - TransactionEvent, - System, - TransactionEventCode, - TransactionData, - NotificationType, - CustomNotificationObject, - BitcoinInputOutput, - NotificationObject, - ContractCall, - DecodedContractCall, - NotifyMessages, - LocaleMessages, - TransactionOptions, - PreflightEvent, - UpdateNotification, - ConfigOptions, - Hash, - Transaction, - NotifyAccount, - Unsubscribe, - Notification, - Config, - API, - EmitterListener, - Emitter, - NotificationDetails -} from './types' - -import { - validateInit, - validateTransactionOptions, - validateNotificationObject, - validateConfig -} from './validation' - -import { createEmitter } from './utils' - -import { version } from '../package.json' - -let notify: any -let blocknative - -function init(options: NotifyInitOptions): API { - if (notify) { - console.warn('notify has already been initialized') - notify.$destroy() - blocknative && blocknative.destroy() - } - - validateInit(options) - - const { system, transactionHandler, apiUrl, ...appOptions } = options - const { dappId, networkId, name, clientLocale, onerror } = appOptions - - const transactionHandlers: TransactionHandler[] = [handleTransactionEvent] - - if (transactionHandler) { - transactionHandlers.push(transactionHandler) - } - - if (dappId) { - blocknative = new BlocknativeSdk({ - dappId, - networkId, - onerror, - transactionHandlers, - name: name || 'Notify', - apiUrl, - system - }) - - // filter out pending simulation events - blocknative - .configuration({ - scope: 'global', - filters: [{ status: 'pending-simulation', _not: true }] - }) - .catch(() => { - // swallow server timeout response error as we are not waiting on it - }) - } - - // save config to app store - app.update((store: AppStore) => ({ - ...store, - ...appOptions, - version, - clientLocale: - clientLocale || - getClientLocale({ - fallback: 'en', - navigator: true - }) - })) - - // initialize App - notify = new Notify({ - target: document.body - }) - - app.subscribe((store: AppStore) => { - const { notifyMessages, clientLocale } = store - - // set the dictionary for i18n - dictionary.set(notifyMessages) - - const availableLocale: LocaleMessages | undefined = - notifyMessages[clientLocale] || notifyMessages[clientLocale.slice(0, 2)] - locale.set(availableLocale ? clientLocale : 'en') - }) - - return { - hash, - transaction, - account, - unsubscribe, - notification, - config - } - - function account( - address: string - ): { details: { address: string }; emitter: Emitter } | never { - if (!blocknative) { - throw new Error( - 'A dappId needs to be passed in when intializing Notify to use the account function' - ) - } - - const result = blocknative.account(address) - return result - } - - function hash(hash: string, id?: string) { - if (!blocknative) { - throw new Error( - 'A dappId needs to be passed in when intializing Notify to use the hash function' - ) - } - - const result = blocknative.transaction(hash, id) - return result - } - - function transaction( - options: TransactionOptions - ): { result: Promise; emitter: Emitter } { - if (!blocknative) { - throw new Error( - 'A dappId needs to be passed in when intializing Notify to use the transaction function' - ) - } - - validateTransactionOptions(options) - - const emitter = createEmitter() - - const result = preflightTransaction(blocknative, options, emitter).catch( - err => { - const { onerror } = get(app) - onerror && onerror(err) - return err - } - ) - - return { - emitter, - result - } - } - - function unsubscribe(addressOrHash: string) { - if (!blocknative) { - throw new Error( - 'A dappId needs to be passed in when intializing Notify to use the unsubscribe function' - ) - } - - blocknative.unsubscribe(addressOrHash) - } - - function notification( - notificationObject: CustomNotificationObject - ): { - dismiss: () => void - update: UpdateNotification - } { - validateNotificationObject(notificationObject) - - let key = 0 - - const id: string = uuid() - const startTime: number = Date.now() - const { eventCode = `customNotification${key++}` } = notificationObject - - const dismiss = () => notifications.remove(id, eventCode) - - function update( - notificationUpdate: CustomNotificationObject - ): { - dismiss: () => void - update: UpdateNotification - } { - validateNotificationObject(notificationUpdate) - - const { eventCode = `customNotification${key++}` } = notificationUpdate - createNotification({ id, startTime, eventCode }, notificationUpdate) - - return { - dismiss, - update - } - } - - createNotification({ id, startTime, eventCode }, notificationObject) - - return { - dismiss, - update - } - } - - function config(options: ConfigOptions): void { - validateConfig(options) - - const { - notifyMessages, - networkId: newNetworkId, - system: newSystem, - ...otherOptions - } = options - - const { networkId, system, dappId, transactionHandler, name, apiUrl } = get( - app - ) - - // networkId or system has changed - if ( - (newNetworkId && newNetworkId !== networkId) || - (newSystem && newSystem !== system) - ) { - if (!blocknative) { - throw new Error( - 'A dappId needs to be passed in when intializing Notify to be able to connect to a system and network' - ) - } - - // close existing SDK connection - blocknative.destroy() - - // create new connection with new values - blocknative = new BlocknativeSdk({ - dappId, - networkId: newNetworkId || networkId, - transactionHandlers: transactionHandler - ? [handleTransactionEvent, transactionHandler] - : [handleTransactionEvent], - name: name || 'Notify', - apiUrl, - system: newSystem || system - }) - } - - app.update((store: AppStore) => { - return { - ...store, - networkId: newNetworkId || networkId, - system: newSystem || system, - ...otherOptions, - notifyMessages: notifyMessages - ? { ...store.notifyMessages, ...notifyMessages } - : store.notifyMessages - } - }) - } -} - -export default init + +// import 'regenerator-runtime/runtime' +// // import BlocknativeSdk from 'bnc-sdk' +// import type { TransactionHandler } from 'bnc-sdk/dist/types/src/interfaces' +// import { get } from 'svelte/store' + +// import uuid from 'uuid/v4' +// // import { locale, dictionary, getClientLocale } from 'svelte-i18n' + +// import Notify from '../src/views/notify/Notify.svelte' + +// // import { app, notifications } from './stores' +// import { handleTransactionEvent, preflightTransaction } from './transactions' +// import { createNotification } from './notifications' + +// import type { +// NotifyInitOptions, +// AppStore, +// API, +// Emitter, +// TransactionOptions, +// CustomNotificationObject, +// UpdateNotification, +// ConfigOptions, +// LocaleMessages +// } from './types' + +// // export { +// // NotifyInitOptions, +// // TransactionEvent, +// // System, +// // TransactionEventCode, +// // TransactionData, +// // NotificationType, +// // CustomNotificationObject, +// // BitcoinInputOutput, +// // NotificationObject, +// // ContractCall, +// // DecodedContractCall, +// // NotifyMessages, +// // LocaleMessages, +// // TransactionOptions, +// // PreflightEvent, +// // UpdateNotification, +// // ConfigOptions, +// // Hash, +// // Transaction, +// // NotifyAccount, +// // Unsubscribe, +// // Notification, +// // Config, +// // API, +// // EmitterListener, +// // Emitter, +// // NotificationDetails +// // } from './types' + +// import { +// validateInit, +// validateTransactionOptions, +// validateNotificationObject, +// validateConfig +// } from './validation' + +// import { createEmitter } from './utils' + +// import { version } from '../package.json' + +// let notify: any +// // let blocknative + +// function init(options: NotifyInitOptions): API { +// if (notify) { +// console.warn('notify has already been initialized') +// notify.$destroy() +// // blocknative && blocknative.destroy() +// } + +// validateInit(options) + +// const { system, transactionHandler, apiUrl, ...appOptions } = options +// const { dappId, networkId, name, clientLocale, onerror } = appOptions + +// const transactionHandlers: TransactionHandler[] = [handleTransactionEvent] + +// if (transactionHandler) { +// transactionHandlers.push(transactionHandler) +// } + +// if (dappId) { +// // blocknative = new BlocknativeSdk({ +// // dappId, +// // networkId, +// // onerror, +// // transactionHandlers, +// // name: name || 'Notify', +// // apiUrl, +// // system +// // }) + +// // filter out pending simulation events +// // blocknative +// // .configuration({ +// // scope: 'global', +// // filters: [{ status: 'pending-simulation', _not: true }] +// // }) +// // .catch(() => { +// // // swallow server timeout response error as we are not waiting on it +// // }) +// } + +// // save config to app store +// // app.update((store: AppStore) => ({ +// // ...store, +// // ...appOptions, +// // version, +// // clientLocale: +// // clientLocale || +// // getClientLocale({ +// // fallback: 'en', +// // navigator: true +// // }) +// // })) + +// // initialize App +// notify = new Notify({ +// target: document.body +// }) + +// // app.subscribe((store: AppStore) => { +// // const { notifyMessages, clientLocale } = store + +// // // set the dictionary for i18n +// // dictionary.set(notifyMessages) + +// // const availableLocale: LocaleMessages | undefined = +// // notifyMessages[clientLocale] || notifyMessages[clientLocale.slice(0, 2)] +// // locale.set(availableLocale ? clientLocale : 'en') +// // }) + +// return { +// hash, +// transaction, +// account, +// unsubscribe, +// notification, +// config +// } + +// function account( +// address: string +// ): { details: { address: string }; emitter: Emitter } | never { +// if (!blocknative) { +// throw new Error( +// 'A dappId needs to be passed in when intializing Notify to use the account function' +// ) +// } + +// const result = blocknative.account(address) +// return result +// } + +// function hash(hash: string, id?: string) { +// if (!blocknative) { +// throw new Error( +// 'A dappId needs to be passed in when intializing Notify to use the hash function' +// ) +// } + +// const result = blocknative.transaction(hash, id) +// return result +// } + +// function transaction( +// options: TransactionOptions +// ): { result: Promise; emitter: Emitter } { +// if (!blocknative) { +// throw new Error( +// 'A dappId needs to be passed in when intializing Notify to use the transaction function' +// ) +// } + +// validateTransactionOptions(options) + +// const emitter = createEmitter() + +// const result = preflightTransaction(blocknative, options, emitter).catch( +// err => { +// const { onerror } = get(app) +// onerror && onerror(err) +// return err +// } +// ) + +// return { +// emitter, +// result +// } +// } + +// function unsubscribe(addressOrHash: string) { +// if (!blocknative) { +// throw new Error( +// 'A dappId needs to be passed in when intializing Notify to use the unsubscribe function' +// ) +// } + +// blocknative.unsubscribe(addressOrHash) +// } + +// function notification( +// notificationObject: CustomNotificationObject +// ): { +// dismiss: () => void +// update: UpdateNotification +// } { +// validateNotificationObject(notificationObject) + +// let key = 0 + +// const id: string = uuid() +// const startTime: number = Date.now() +// const { eventCode = `customNotification${key++}` } = notificationObject + +// const dismiss = () => notifications.remove(id, eventCode) + +// function update( +// notificationUpdate: CustomNotificationObject +// ): { +// dismiss: () => void +// update: UpdateNotification +// } { +// validateNotificationObject(notificationUpdate) + +// const { eventCode = `customNotification${key++}` } = notificationUpdate +// createNotification({ id, startTime, eventCode }, notificationUpdate) + +// return { +// dismiss, +// update +// } +// } + +// createNotification({ id, startTime, eventCode }, notificationObject) + +// return { +// dismiss, +// update +// } +// } + +// function config(options: ConfigOptions): void { +// validateConfig(options) + +// const { +// notifyMessages, +// networkId: newNetworkId, +// system: newSystem, +// ...otherOptions +// } = options + +// const { networkId, system, dappId, transactionHandler, name, apiUrl } = get( +// app +// ) + +// // networkId or system has changed +// if ( +// (newNetworkId && newNetworkId !== networkId) || +// (newSystem && newSystem !== system) +// ) { +// if (!blocknative) { +// throw new Error( +// 'A dappId needs to be passed in when intializing Notify to be able to connect to a system and network' +// ) +// } + +// // close existing SDK connection +// blocknative.destroy() + +// // create new connection with new values +// blocknative = new BlocknativeSdk({ +// dappId, +// networkId: newNetworkId || networkId, +// transactionHandlers: transactionHandler +// ? [handleTransactionEvent, transactionHandler] +// : [handleTransactionEvent], +// name: name || 'Notify', +// apiUrl, +// system: newSystem || system +// }) +// } + +// app.update((store: AppStore) => { +// return { +// ...store, +// networkId: newNetworkId || networkId, +// system: newSystem || system, +// ...otherOptions, +// notifyMessages: notifyMessages +// ? { ...store.notifyMessages, ...notifyMessages } +// : store.notifyMessages +// } +// }) +// } +// } + +// export default init diff --git a/packages/core/src/store/index.ts b/packages/core/src/store/index.ts index f174953ca..759269f14 100644 --- a/packages/core/src/store/index.ts +++ b/packages/core/src/store/index.ts @@ -14,7 +14,7 @@ import type { AddWalletAction, UpdateAccountAction, UpdateAccountCenterAction, - UpdateNotify, + UpdateNotifyAction, Locale } from '../types' @@ -116,11 +116,11 @@ function reducer(state: AppState, action: Action): AppState { } case UPDATE_NOTIFY: { - const update = payload as UpdateNotify['payload'] + const update = payload as UpdateNotifyAction['payload'] return { ...state, - accountCenter: { - ...state.accountCenter, + notify: { + ...state.notify, ...update } } diff --git a/packages/core/src/stores.ts b/packages/core/src/stores.ts index 564194bce..2f78a0789 100644 --- a/packages/core/src/stores.ts +++ b/packages/core/src/stores.ts @@ -1,109 +1,109 @@ -import { writable } from 'svelte/store' -import { replaceOrAdd } from './utils' -import { defaultNotifyMessages } from './i18n' +// import { writable } from 'svelte/store' +// import { replaceOrAdd } from './utils' +// import { defaultNotifyMessages } from './i18n' -import type { - TransactionData, - NotificationObject, - CustomNotificationObject, - AppStore -} from './types' +// import type { +// TransactionData, +// NotificationObject, +// CustomNotificationObject, +// AppStore +// } from './types' -export const app = writable({ - version: '', - name: '', - dappId: '', - networkId: 1, - nodeSynced: true, - mobilePosition: 'top', - desktopPosition: 'bottomRight', - darkMode: false, - txApproveReminderTimeout: 20000, - txStallPendingTimeout: 20000, - txStallConfirmedTimeout: 90000, - clientLocale: 'en', - notifyMessages: defaultNotifyMessages -}) -export const accounts = writable([]) -export const contracts = writable([]) -export const transactions = createTransactionStore([]) -export const notifications = createNotificationStore([]) +// export const app = writable({ +// version: '', +// name: '', +// dappId: '', +// networkId: 1, +// nodeSynced: true, +// mobilePosition: 'top', +// desktopPosition: 'bottomRight', +// darkMode: false, +// txApproveReminderTimeout: 20000, +// txStallPendingTimeout: 20000, +// txStallConfirmedTimeout: 90000, +// clientLocale: 'en', +// notifyMessages: defaultNotifyMessages +// }) +// export const accounts = writable([]) +// export const contracts = writable([]) +// export const transactions = createTransactionStore([]) +// export const notifications = createNotificationStore([]) -function createTransactionStore(initialState: TransactionData[]) { - const { subscribe, update } = writable(initialState) +// function createTransactionStore(initialState: TransactionData[]) { +// const { subscribe, update } = writable(initialState) - function updateQueue( - transaction: TransactionData, - predicate: (tx: TransactionData) => boolean - ) { - update((store: TransactionData[]) => { - return replaceOrAdd(store, predicate, transaction) - }) - } +// function updateQueue( +// transaction: TransactionData, +// predicate: (tx: TransactionData) => boolean +// ) { +// update((store: TransactionData[]) => { +// return replaceOrAdd(store, predicate, transaction) +// }) +// } - function add(transaction: TransactionData) { - update((store: TransactionData[]) => [...store, transaction]) - } +// function add(transaction: TransactionData) { +// update((store: TransactionData[]) => [...store, transaction]) +// } - return { - subscribe, - updateQueue, - add - } -} +// return { +// subscribe, +// updateQueue, +// add +// } +// } -function createNotificationStore( - initialState: (NotificationObject & CustomNotificationObject)[] -) { - const { subscribe, update } = writable(initialState) +// function createNotificationStore( +// initialState: (NotificationObject & CustomNotificationObject)[] +// ) { +// const { subscribe, update } = writable(initialState) - function add(notification: NotificationObject & CustomNotificationObject) { - update((store: (NotificationObject & CustomNotificationObject)[]) => { - const existingNotification = store.find( - (n: NotificationObject & CustomNotificationObject) => - n.id === notification.id - ) +// function add(notification: NotificationObject & CustomNotificationObject) { +// update((store: (NotificationObject & CustomNotificationObject)[]) => { +// const existingNotification = store.find( +// (n: NotificationObject & CustomNotificationObject) => +// n.id === notification.id +// ) - // if notification is a hint type or there are - // no existing notifications with same id, then just add it. - if (notification.type === 'hint' || !existingNotification) { - return [...store, notification] - } +// // if notification is a hint type or there are +// // no existing notifications with same id, then just add it. +// if (notification.type === 'hint' || !existingNotification) { +// return [...store, notification] +// } - // otherwise filter out all notifications with the - // same id and then add the new notification - return [ - ...store.filter( - (n: NotificationObject & CustomNotificationObject) => - n.id !== notification.id - ), - notification - ] - }) - } +// // otherwise filter out all notifications with the +// // same id and then add the new notification +// return [ +// ...store.filter( +// (n: NotificationObject & CustomNotificationObject) => +// n.id !== notification.id +// ), +// notification +// ] +// }) +// } - function remove(id: string, eventCode: string) { - update((store: (NotificationObject & CustomNotificationObject)[]) => - store.filter( - (n: NotificationObject & CustomNotificationObject) => - n.id !== id || n.eventCode !== eventCode - ) - ) - } +// function remove(id: string, eventCode: string) { +// update((store: (NotificationObject & CustomNotificationObject)[]) => +// store.filter( +// (n: NotificationObject & CustomNotificationObject) => +// n.id !== id || n.eventCode !== eventCode +// ) +// ) +// } - function updateId(oldId: string, newId: string) { - update((store: (NotificationObject & CustomNotificationObject)[]) => - store.map((n: NotificationObject & CustomNotificationObject) => - n.id === oldId ? { ...n, id: newId } : n - ) - ) - } +// function updateId(oldId: string, newId: string) { +// update((store: (NotificationObject & CustomNotificationObject)[]) => +// store.map((n: NotificationObject & CustomNotificationObject) => +// n.id === oldId ? { ...n, id: newId } : n +// ) +// ) +// } - return { - subscribe, - add, - remove, - update, - updateId - } -} +// return { +// subscribe, +// add, +// remove, +// update, +// updateId +// } +// } diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 428f3cc09..7d8bcb035 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -23,7 +23,7 @@ export interface InitOptions { appMetadata?: AppMetadata i18n?: i18nOptions accountCenter?: AccountCenterOptions - notify?: NotifyOptions + notify: NotifyInitOptions } export interface OnboardAPI { @@ -202,20 +202,17 @@ import type { TransactionHandler } from 'bnc-sdk/dist/types/src/interfaces' -export interface NotifyInitOptions extends ConfigOptions { +export interface NotifyOptions extends ConfigOptions { dappId?: string transactionHandler?: TransactionHandler name?: string apiUrl?: string onerror?: ErrorHandler -} - -export type NotifyOptions = { enabled: boolean - transactionHandler: TransactionHandler, - onerror?: ErrorHandler, // Handles error responses } +export type NotifyInitOptions = Omit + export type ErrorHandler = (error: SDKError) => void export interface TransactionEvent { diff --git a/packages/core/src/validation.ts b/packages/core/src/validation.ts index 9d27e47cf..2b621cff0 100644 --- a/packages/core/src/validation.ts +++ b/packages/core/src/validation.ts @@ -116,6 +116,7 @@ const initOptions = Joi.object({ accountCenter: Joi.object({ desktop: Joi.object({ enabled: Joi.boolean(), + minimal: Joi.boolean(), position: accountCenterPosition }), mobile: Joi.object({ @@ -124,7 +125,7 @@ const initOptions = Joi.object({ }) }), notify: Joi.object({ - transactionHandler: Joi.function().required(), + transactionHandler: Joi.function(), enabled: Joi.boolean(), onerror: Joi.function(), }) diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index e533944f9..c53a14b63 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -6,11 +6,14 @@ import SwitchChain from './chain/SwitchChain.svelte' import ActionRequired from './connect/ActionRequired.svelte' import AccountCenter from './account-center/Index.svelte' - import Notify from './notify/views/Notify.svelte'; + import Notify from './notify/Index.svelte'; const accountCenter$ = state .select('accountCenter') .pipe(startWith(state.get().accountCenter), shareReplay(1)) + const notify$ = state + .select('notify') + .pipe(startWith(state.get().notify), shareReplay(1)) + + +
    + + + + + +
  • + + + + Transaction is pending + + + + {shortenAddress('0xc572779D7839B998DF24fc316c89BeD3D450ED13')} + + + - + + 2s ago + + + + + + +
  • + +
+ diff --git a/packages/core/src/views/notify/components/AutoDismiss.svelte b/packages/core/src/views/notify/components/AutoDismiss.svelte deleted file mode 100644 index af8111a3c..000000000 --- a/packages/core/src/views/notify/components/AutoDismiss.svelte +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/packages/core/src/views/notify/components/CloseIcon.svelte b/packages/core/src/views/notify/components/CloseIcon.svelte deleted file mode 100644 index 4d7e9cd29..000000000 --- a/packages/core/src/views/notify/components/CloseIcon.svelte +++ /dev/null @@ -1,50 +0,0 @@ - - - - -
(hovered = true)} - on:mouseleave={() => (hovered = false)}> - - - - - - -
diff --git a/packages/core/src/views/notify/components/NotificationContent.svelte b/packages/core/src/views/notify/components/NotificationContent.svelte deleted file mode 100644 index 82115d04e..000000000 --- a/packages/core/src/views/notify/components/NotificationContent.svelte +++ /dev/null @@ -1,93 +0,0 @@ - - - - -
- -

-

-
diff --git a/packages/core/src/views/notify/components/TypeIcon.svelte b/packages/core/src/views/notify/components/TypeIcon.svelte deleted file mode 100644 index a25473816..000000000 --- a/packages/core/src/views/notify/components/TypeIcon.svelte +++ /dev/null @@ -1,737 +0,0 @@ - - - - -
- {#if type === 'hint'} - - - - - - - - - - - - - {/if} - - {#if type === 'pending'} - - - - - - - - - - - - - - - {/if} - - {#if type === 'success'} - - - - - {/if} - - {#if type === 'error'} - - - - - - - - - - - {/if} -
diff --git a/packages/core/src/views/notify/elements/Clock.svelte b/packages/core/src/views/notify/elements/Clock.svelte deleted file mode 100644 index 8f65082d0..000000000 --- a/packages/core/src/views/notify/elements/Clock.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - diff --git a/packages/core/src/views/notify/elements/NotificationMessage.svelte b/packages/core/src/views/notify/elements/NotificationMessage.svelte deleted file mode 100644 index f2adc00c0..000000000 --- a/packages/core/src/views/notify/elements/NotificationMessage.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - -

- {@html message} -

diff --git a/packages/core/src/views/notify/elements/Time.svelte b/packages/core/src/views/notify/elements/Time.svelte deleted file mode 100644 index 2b0aea74f..000000000 --- a/packages/core/src/views/notify/elements/Time.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - {time} - diff --git a/packages/core/src/views/notify/elements/Timer.svelte b/packages/core/src/views/notify/elements/Timer.svelte deleted file mode 100644 index 472ee31da..000000000 --- a/packages/core/src/views/notify/elements/Timer.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - {value} - diff --git a/packages/core/src/views/notify/views/Notify.svelte b/packages/core/src/views/notify/views/Notify.svelte deleted file mode 100644 index 5ac7db060..000000000 --- a/packages/core/src/views/notify/views/Notify.svelte +++ /dev/null @@ -1,211 +0,0 @@ - - - - -{#if $notifications.length > 0} -
    - {#each $notifications as notification (notification.key)} -
  • notification.onclick && notification.onclick(e)} - style={notificationMargin} - animate:flip={{ duration: 500 }} - class:bn-notify-dark-mode={$app.darkMode} - class:bn-notify-clickable={notification.onclick} - class="bn-notify-custom bn-notify-notification {`bn-notify-notification-${notification.type}`} - {$app.name ? `bn-notify-${$app.name}` : ''}" - in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} - out:fly={{ duration: 400, x, y, easing: quintIn }}> - {#if notification.link} - - - - - {:else} - - - {/if} -
    notifications.remove(notification.id, notification.eventCode)}> - -
    - -
  • - {/each} -
-{/if} diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 9e1b4c03f..68352ba6d 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -1158,16 +1158,6 @@ bn.js@^5.1.2, bn.js@^5.2.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== -bnc-sdk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.2.0.tgz#cabc70eaf4a49dd2f695c6fcee50c833aa2af6b2" - integrity sha512-uoe40jLL+eYxeCAOqLgWLOowU9kyUuXyLURVgSSfIBjUNuszlz+I2wZYtvdWF+YkYphSr7L3E6WFtmwFrne+Pw== - dependencies: - crypto-es "^1.2.2" - nanoid "^3.3.1" - rxjs "^6.6.3" - sturdy-websocket "^0.1.12" - bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -1347,11 +1337,6 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypto-es@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" - integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== - debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -2039,11 +2024,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -2139,11 +2119,6 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nanoid@^3.3.1: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -2376,13 +2351,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - rxjs@^7.5.2: version "7.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" @@ -2527,13 +2495,6 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -sturdy-websocket@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" - integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== - dependencies: - lodash.defaults "^4.2.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2626,7 +2587,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index c3a2fd81f..38f7f28c2 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -150,7 +150,7 @@ }, gettingStartedGuide: 'https://blocknative.com', explore: 'https://blocknative.com' - } + }, // example customizing account center // accountCenter: { // desktop: { @@ -167,6 +167,11 @@ // } // } // } + notify: { + onerror: error => console.log(`Notify error: ${error.message}`), + enabled: true + }, + dappId: '12153f55-f29e-4f11-aa07-90f10da5d778' }) // Subscribe to wallet updates From e3743fcaddb88baf51bf2977c5854dbe3ee7ada0 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Thu, 19 May 2022 16:21:27 -0600 Subject: [PATCH 003/108] Styling getting closer --- packages/core/src/icons/checkmark.ts | 5 ++ packages/core/src/icons/hourglass.ts | 5 ++ packages/core/src/views/notify/Index.svelte | 66 +++++++++++++------ packages/core/src/views/notify/Pending.svelte | 8 +++ .../core/src/views/notify/ProtocolLogo.svelte | 37 +++++++++++ .../core/src/views/notify/StatusChain.svelte | 34 ++++++++++ 6 files changed, 134 insertions(+), 21 deletions(-) create mode 100644 packages/core/src/icons/checkmark.ts create mode 100644 packages/core/src/icons/hourglass.ts create mode 100644 packages/core/src/views/notify/Pending.svelte create mode 100644 packages/core/src/views/notify/ProtocolLogo.svelte create mode 100644 packages/core/src/views/notify/StatusChain.svelte diff --git a/packages/core/src/icons/checkmark.ts b/packages/core/src/icons/checkmark.ts new file mode 100644 index 000000000..3f0fbf735 --- /dev/null +++ b/packages/core/src/icons/checkmark.ts @@ -0,0 +1,5 @@ +export default ` + + + +` \ No newline at end of file diff --git a/packages/core/src/icons/hourglass.ts b/packages/core/src/icons/hourglass.ts new file mode 100644 index 000000000..b064b33f0 --- /dev/null +++ b/packages/core/src/icons/hourglass.ts @@ -0,0 +1,5 @@ +export default ` + + + +` \ No newline at end of file diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 793c8a660..6722e66e6 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -6,6 +6,7 @@ import type { NotifyInitOptions } from '../../types'; import CloseButton from '../shared/CloseButton.svelte'; import { TransactionDescription } from 'ethers/lib/utils'; import { shortenAddress, shortenEns } from '../../utils' +import Pending from './Pending.svelte'; // import debounce from 'lodash.debounce' @@ -98,6 +99,8 @@ import { shortenAddress, shortenEns } from '../../utils' // justifyContent = 'justify-content: flex-end;' // positioning = 'bottom: 0; right: 0;' // } + + const hash = "0xc572779D7839B998DF24fc316c89BeD3D450ED13" + +
+ {@html icon} +
\ No newline at end of file diff --git a/packages/core/src/views/notify/StatusChain.svelte b/packages/core/src/views/notify/StatusChain.svelte new file mode 100644 index 000000000..b4d47ae2d --- /dev/null +++ b/packages/core/src/views/notify/StatusChain.svelte @@ -0,0 +1,34 @@ + + + + +
+
+ {@html statusIcon} +
+
+ +
+
\ No newline at end of file From 777ffd789e8ef1d4e1f179ca5d694cdbf8c74a62 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 20 May 2022 10:11:09 -0600 Subject: [PATCH 004/108] Layout looking a lot better --- packages/core/src/icons/hourglass.ts | 4 +- packages/core/src/views/Index.svelte | 4 ++ packages/core/src/views/notify/Index.svelte | 48 +++++++++++-------- packages/core/src/views/notify/Pending.svelte | 3 +- .../core/src/views/notify/ProtocolLogo.svelte | 22 ++++----- .../core/src/views/notify/StatusChain.svelte | 19 ++++---- .../core/src/views/shared/CloseButton.svelte | 11 +++-- 7 files changed, 61 insertions(+), 50 deletions(-) diff --git a/packages/core/src/icons/hourglass.ts b/packages/core/src/icons/hourglass.ts index b064b33f0..c05b1d50e 100644 --- a/packages/core/src/icons/hourglass.ts +++ b/packages/core/src/icons/hourglass.ts @@ -1,5 +1,5 @@ export default ` - - + + ` \ No newline at end of file diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index c53a14b63..9376728db 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -21,6 +21,10 @@ display: flex; } + :global(.inline-flex) { + display: inline-flex; + } + :global(.flex-column) { flex-direction: column; } diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 6722e66e6..89016ae7d 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -170,34 +170,35 @@ import Pending from './Pending.svelte'; display: flex; } - /* .bn-notify-notification-close */ - /* div { - position: absolute; - top: 0.75em; - right: 0.75em; - font-size: inherit; - font-family: inherit; - } */ div.notify-transaction-data { font-size: var(--onboard-font-size-6, var(--font-size-6)); font-family: inherit; + margin: 0px 8px; + justify-content: space-between; } .hash-time { - font-size: var(--onboard-font-size-7, var(--font-size-7)); display: inline-flex; + margin-top: 2px; + font-size: var(--onboard-font-size-7, var(--font-size-7)); + line-height: var(--onboard-line-height-4, var(--line-height-4)); } a { } + .time { + color: var(--onboard-gray-300, var(--gray-300)); + margin-left: 4px; + } + .address-hash { color: var(--onboard-primary-400, var(--primary-400)) } div.notify-close-btn { margin-left: auto; margin-bottom: auto; - height: 32px; - width: 32px; + height: 24px; + width: 24px; } a { @@ -205,6 +206,11 @@ import Pending from './Pending.svelte'; text-decoration: none; color: inherit; } + + .transaction-status { + color: var(--onboard-primary-100, var(--primary-100)); + line-height: 14px; + } @@ -213,8 +219,7 @@ import Pending from './Pending.svelte'; style={`${positioning} ${justifyContent}`}> - -
  • -
    +
    - Transaction is pending + + Transaction is pending + -
    + {shortenAddress(hash)} - - 2s ago + + - 2s ago + -
    +
    @@ -260,9 +269,8 @@ import Pending from './Pending.svelte'; on:click|stopPropagation={() => notifications.remove(notification.id, notification.eventCode)}>
    --> -
    - +
  • diff --git a/packages/core/src/views/notify/Pending.svelte b/packages/core/src/views/notify/Pending.svelte index 28fef8000..4df9f781c 100644 --- a/packages/core/src/views/notify/Pending.svelte +++ b/packages/core/src/views/notify/Pending.svelte @@ -2,7 +2,8 @@ import StatusChain from './StatusChain.svelte' import hourglass from '../../icons/hourglass' import polygonIcon from '../../icons/polygon' + import ethereumIcon from '../../icons/ethereum' - \ No newline at end of file + \ No newline at end of file diff --git a/packages/core/src/views/notify/ProtocolLogo.svelte b/packages/core/src/views/notify/ProtocolLogo.svelte index f7d8edbcd..f7f09b553 100644 --- a/packages/core/src/views/notify/ProtocolLogo.svelte +++ b/packages/core/src/views/notify/ProtocolLogo.svelte @@ -1,9 +1,9 @@
    {@html icon}
    \ No newline at end of file diff --git a/packages/core/src/views/notify/StatusChain.svelte b/packages/core/src/views/notify/StatusChain.svelte index b4d47ae2d..70b1be62f 100644 --- a/packages/core/src/views/notify/StatusChain.svelte +++ b/packages/core/src/views/notify/StatusChain.svelte @@ -7,28 +7,27 @@ -
    -
    +
    +
    {@html statusIcon}
    -
    - +
    +
    \ No newline at end of file diff --git a/packages/core/src/views/shared/CloseButton.svelte b/packages/core/src/views/shared/CloseButton.svelte index ef07847a5..67e1f8380 100644 --- a/packages/core/src/views/shared/CloseButton.svelte +++ b/packages/core/src/views/shared/CloseButton.svelte @@ -1,5 +1,7 @@
    -
    {@html closeIcon}
    +
    + {@html closeIcon} +
    From a8b77d9404e3efe06894b85186c3e390e2007cb9 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 20 May 2022 11:32:22 -0600 Subject: [PATCH 005/108] Aniomations working properly for pending --- packages/core/src/views/notify/Pending.svelte | 3 +- .../core/src/views/notify/StatusChain.svelte | 72 ++++++++++++++++--- 2 files changed, 66 insertions(+), 9 deletions(-) diff --git a/packages/core/src/views/notify/Pending.svelte b/packages/core/src/views/notify/Pending.svelte index 4df9f781c..d16130117 100644 --- a/packages/core/src/views/notify/Pending.svelte +++ b/packages/core/src/views/notify/Pending.svelte @@ -3,7 +3,8 @@ import hourglass from '../../icons/hourglass' import polygonIcon from '../../icons/polygon' import ethereumIcon from '../../icons/ethereum' + import binanceIcon from '../../icons/binance' - \ No newline at end of file + \ No newline at end of file diff --git a/packages/core/src/views/notify/StatusChain.svelte b/packages/core/src/views/notify/StatusChain.svelte index 70b1be62f..14ff8d799 100644 --- a/packages/core/src/views/notify/StatusChain.svelte +++ b/packages/core/src/views/notify/StatusChain.svelte @@ -1,9 +1,10 @@ - -
    -
    - {@html statusIcon} +
    + {#if pending} +
    + {/if} + +
    +
    + {@html statusIcon} +
    - +
    -
    \ No newline at end of file +
    From 27f03eda1f39b846e2f800d76827a918b8ce1a26 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 20 May 2022 12:46:13 -0600 Subject: [PATCH 006/108] Updated cleanliness --- packages/core/src/views/notify/StatusChain.svelte | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/core/src/views/notify/StatusChain.svelte b/packages/core/src/views/notify/StatusChain.svelte index 14ff8d799..f4c5a599e 100644 --- a/packages/core/src/views/notify/StatusChain.svelte +++ b/packages/core/src/views/notify/StatusChain.svelte @@ -49,6 +49,11 @@ top: -25%; animation: rotate 2s infinite linear; } + + div.chain-icon-container { + left: 18px; + top: 18px; + } @keyframes rotate { 100% { transform: rotate(-360deg); @@ -77,7 +82,7 @@ {@html statusIcon}
    -
    +
    Date: Tue, 24 May 2022 09:03:23 -0600 Subject: [PATCH 007/108] Demo stuff --- packages/core/src/views/notify/Index.svelte | 67 ++++++++++++++++++++- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 60bcaea6c..64f576416 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -8,6 +8,10 @@ import { TransactionDescription } from 'ethers/lib/utils'; import { shortenAddress, shortenEns, chainStyles } from '../../utils' import StatusChain from './StatusChain.svelte'; + +import { _ } from 'svelte-i18n' + + import en from '../../i18n/en.json' // import debounce from 'lodash.debounce' // import CloseIcon from '../components/CloseIcon.svelte' @@ -105,13 +109,64 @@ import StatusChain from './StatusChain.svelte'; const currentChain = '0x89' const status: NotificationObject = { id: 'testing123', - type: 'success', + type: 'error', key: 'keytesting', // startTime?: number // eventCode?: string message: 'test message' // autoDismiss?: number } + import { tweened } from 'svelte/motion'; + let original = 5 * 60; // TYPE NUMBER OF SECONDS HERE + let timer = tweened(original) + + // ------ dont need to modify code below + setInterval(() => { + if ($timer > 0) $timer++; + }, 1000); + + $: minutes = Math.floor($timer / 60); + $: minname = minutes > 1 ? "mins" : "min"; + $: seconds = Math.floor($timer - minutes * 60) + + // '0x1': { + // icon: ethereumIcon, + // color: '#627EEA' + // }, + // '0x3': { + // icon: ethereumIcon, + // color: '#627EEA' + // }, + // '0x4': { + // icon: ethereumIcon, + // color: '#627EEA' + // }, + // '0x5': { + // icon: ethereumIcon, + // color: '#627EEA' + // }, + // '0x2a': { + // icon: ethereumIcon, + // color: '#627EEA' + // }, + // '0x38': { + // icon: binanceIcon, + // color: '#F3BA2F' + // }, + // '0x89': { + // icon: polygonIcon, + // color: '#8247E5' + // }, + + // function timeString(): string { + // var start = Date.now(); + // var textNode = document.createTextNode('0'); + // document.getElementById('seconds').appendChild(textNode); + // return function() { + // textNode.data = Math.floor((Date.now()-start)/1000); + // }; + + // } @@ -244,6 +301,12 @@ import StatusChain from './StatusChain.svelte'; Transaction is pending + {$_( + en.defaultNotifyMessages.en.transaction['txPool'], + { + default: en.defaultNotifyMessages.en.transaction['txPool'] + } + )} @@ -253,7 +316,7 @@ import StatusChain from './StatusChain.svelte'; - - 2s ago + - {seconds}s ago From ac05485033d26ede3bb42d9bb0549c6dabbe0742 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 24 May 2022 15:11:20 -0600 Subject: [PATCH 008/108] Props passed in properly --- packages/core/src/index.ts | 9 +++------ packages/core/src/types.ts | 2 +- packages/core/src/validation.ts | 4 +++- packages/core/src/views/Index.svelte | 5 ++++- packages/demo/src/App.svelte | 10 +++++----- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 46e3e9b26..a71ae7ef5 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -15,7 +15,7 @@ import { validateInitOptions } from './validation' import initI18N from './i18n' import App from './views/Index.svelte' -import type { InitOptions, OnboardAPI } from './types' +import type { InitOptions, NotifyInitOptions, NotifyOptions, OnboardAPI } from './types' import { getDevice } from './utils' const API = { @@ -81,12 +81,9 @@ function init(options: InitOptions): OnboardAPI { accountCenterUpdate && updateAccountCenter(accountCenterUpdate) - let notifyUpdate - + const notifyUpdate: NotifyOptions = { ...notify, dappId } if (notify && notify.enabled && !dappId) { - notifyUpdate = { - enabled: false - } + notifyUpdate.enabled = false } notifyUpdate && updateNotify(notifyUpdate) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index a9289e278..f93feddbd 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -207,7 +207,7 @@ import type { } from 'bnc-sdk/dist/types/src/interfaces' export interface NotifyOptions extends ConfigOptions { - dappId?: string + dappId: string transactionHandler?: TransactionHandler name?: string apiUrl?: string diff --git a/packages/core/src/validation.ts b/packages/core/src/validation.ts index 2b621cff0..ebd37d85e 100644 --- a/packages/core/src/validation.ts +++ b/packages/core/src/validation.ts @@ -158,7 +158,9 @@ const accountCenter = Joi.object({ }) const notify = Joi.object({ - transactionHandler: Joi.function().required(), + //Transaction handler will be required? + transactionHandler: Joi.function(), + dappId: Joi.string().required(), enabled: Joi.boolean(), onerror: Joi.function(), }) diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index 9376728db..d1ece52ba 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -14,6 +14,9 @@ const notify$ = state .select('notify') .pipe(startWith(state.get().notify), shareReplay(1)) + + notify$.subscribe(x => console.log(x)) + accountCenter$.subscribe(x => console.log(x)) - -
    - {@html icon} -
    \ No newline at end of file diff --git a/packages/core/src/views/notify/StatusChain.svelte b/packages/core/src/views/notify/StatusChain.svelte deleted file mode 100644 index 6b5d39360..000000000 --- a/packages/core/src/views/notify/StatusChain.svelte +++ /dev/null @@ -1,97 +0,0 @@ - - - - -
    - {#if notification.type === 'pending'} -
    - {/if} - -
    -
    - {@html defaultNotifyEventStyles[notification.type]['eventIcon']} -
    -
    -
    - -
    -
    From b0d901a17177af62dfa0f4d3b2674ac7df5fed42 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 27 May 2022 11:11:04 -0600 Subject: [PATCH 010/108] Notify into AC --- packages/core/src/views/Index.svelte | 7 +------ .../core/src/views/account-center/Index.svelte | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index d1ece52ba..b631fb785 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -6,7 +6,6 @@ import SwitchChain from './chain/SwitchChain.svelte' import ActionRequired from './connect/ActionRequired.svelte' import AccountCenter from './account-center/Index.svelte' - import Notify from './notify/Index.svelte'; const accountCenter$ = state .select('accountCenter') @@ -257,9 +256,5 @@ {/if} {#if $accountCenter$.enabled && $wallets$.length} - -{/if} - -{#if $notify$.enabled} - + {/if} diff --git a/packages/core/src/views/account-center/Index.svelte b/packages/core/src/views/account-center/Index.svelte index 17b152778..6ad085273 100644 --- a/packages/core/src/views/account-center/Index.svelte +++ b/packages/core/src/views/account-center/Index.svelte @@ -1,12 +1,15 @@ {#if statuses.length > 0}
      + style={`${positioning} ${justifyContent}`} + > {#each statuses as status (status.key)} - - - +
    • - - + out:fly={{ duration: 400, x, y, easing: quintIn }} + > +
      - - + {$_(`notify.transaction[${transactionMsg}]`, { default: en.notify.transaction[transactionMsg] })} - + @@ -312,15 +261,13 @@ import { _ } from 'svelte-i18n' {shortenAddress(hash)} - + - {seconds}s ago -
      -
      - +
    • {/each} diff --git a/packages/demo/package.json b/packages/demo/package.json index 0af532dea..64b6a02b5 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -22,7 +22,7 @@ "webpack-dev-server": "4.7.4" }, "dependencies": { - "@web3-onboard/core": "2.2.9-alpha.3", + "@web3-onboard/core": "2.3.0-alpha.1", "@web3-onboard/coinbase": "^2.0.3", "@web3-onboard/fortmatic": "^2.0.2", "@web3-onboard/gnosis": "^2.0.1", diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index f317c14fa..259619180 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -174,10 +174,10 @@ // } // } // } - notify: { - onerror: error => console.log(`Notify error: ${error.message}`), - enabled: true - }, + // notify: { + // onerror: error => console.log(`Notify error: ${error.message}`), + // enabled: true + // }, dappId: '12153f55-f29e-4f11-aa07-90f10da5d778' }) diff --git a/yarn.lock b/yarn.lock index 088dcb9d3..cd99bdc0b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -795,17 +795,6 @@ google-protobuf "^3.7.0-rc.2" pbjs "^0.0.5" -"@keystonehq/base-eth-keyring@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.3.2.tgz#71efe1495d4931fab5fd0016c8722fe5d9657da9" - integrity sha512-y/kv8XNRSzqcSl7fvZklBKr4MVir1OJHzqM5vC+3yvzkh3mVtN8vUjAAxHtmVVVyM8rsdqK7aYZ7paexYdpnag== - dependencies: - "@ethereumjs/tx" "3.0.0" - "@keystonehq/bc-ur-registry-eth" "^0.7.7" - ethereumjs-util "^7.0.8" - hdkey "^2.0.1" - uuid "^8.3.2" - "@keystonehq/base-eth-keyring@^0.6.0-alpha.1": version "0.6.0-alpha.1" resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.0-alpha.1.tgz#ff19689eb07a54aefdc21394a51c117660f7a0d2" @@ -827,25 +816,6 @@ hdkey "^2.0.1" uuid "^8.3.2" -"@keystonehq/bc-ur-registry-eth@^0.7.7": - version "0.7.7" - resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.7.7.tgz#45267510900049050ef860a1e78fde9087b75972" - integrity sha512-2gZf18ogSCLjsn3PxGqwiOMz/G11v7byRnTLv5/wNJGzCqkMf86OKaVbUgsVokq0B5KAZtpCFQxj96rrFhPRiQ== - dependencies: - "@keystonehq/bc-ur-registry" "^0.4.4" - ethereumjs-util "^7.0.8" - hdkey "^2.0.1" - uuid "^8.3.2" - -"@keystonehq/bc-ur-registry@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.4.4.tgz#3073fdd4b33cdcbd04526a313a7685891a4b4583" - integrity sha512-SBdKdAZfp3y14GTGrKjfJJHf4iXObjcm4/qKUZ92lj8HVR8mxHHGmHksjE328bJPTAsJPloLix4rTnWg+qgS2w== - dependencies: - "@ngraveio/bc-ur" "^1.1.5" - base58check "^2.0.0" - tslib "^2.3.0" - "@keystonehq/bc-ur-registry@^0.5.0-alpha.5": version "0.5.0-alpha.6" resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.0-alpha.6.tgz#56868a7deeeaf5315a7fff6c0b42f3d31555a5c2" @@ -855,21 +825,6 @@ base58check "^2.0.0" tslib "^2.3.0" -"@keystonehq/eth-keyring@^0.11.2-alpha.2": - version "0.11.2" - resolved "https://registry.yarnpkg.com/@keystonehq/eth-keyring/-/eth-keyring-0.11.2.tgz#92b2d54b82cb107170a34592fa923bce28051493" - integrity sha512-2fuO/8PdWTcXIyPK0jI1nNG0mj9x3c1wcsob7dUcwiHme5yDMUb1OX9vPfSD0TCiYJYLOzuU6WDL9s6d/lWGOg== - dependencies: - "@ethereumjs/tx" "3.0.0" - "@keystonehq/base-eth-keyring" "^0.3.2" - "@keystonehq/bc-ur-registry-eth" "^0.7.7" - "@keystonehq/sdk" "^0.9.1" - "@metamask/obs-store" "^7.0.0" - bs58check "^2.1.2" - ethereumjs-util "^7.0.8" - hdkey "^2.0.1" - uuid "^8.3.2" - "@keystonehq/eth-keyring@^0.14.0-alpha.10.3": version "0.14.0-alpha.10.3" resolved "https://registry.yarnpkg.com/@keystonehq/eth-keyring/-/eth-keyring-0.14.0-alpha.10.3.tgz#c2959dfe1ebc8e9eb83612f817a5e01535d7c0c8" @@ -899,19 +854,6 @@ rxjs "^6.6.3" typescript "^4.6.2" -"@keystonehq/sdk@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@keystonehq/sdk/-/sdk-0.9.1.tgz#d1084c967118046257b720fedd8fbe8bb845a1c7" - integrity sha512-tcKDvKQVoe/2tibsjF/19VQhq1vldC+DyhC30lA9XJbbh5tXSoNfqqUVbMvDqxino/vBHZQur6rDSHF8+KBoMw== - dependencies: - "@ngraveio/bc-ur" "^1.0.0" - qrcode.react "^1.0.1" - react "16.13.1" - react-dom "16.13.1" - react-modal "^3.12.1" - react-qr-reader "^2.2.1" - rxjs "^6.6.3" - "@ledgerhq/cryptoassets@^6.25.0": version "6.25.0" resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-6.25.0.tgz#9e9307c69c436c938fafd27d5351526c21a2a114" @@ -2124,30 +2066,12 @@ dependencies: "@walletconnect/window-getters" "^1.0.0" -"@web3-onboard/coinbase@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/coinbase/-/coinbase-2.0.2.tgz#31a5b7f4afa04dddb34ddd748753f9f08a9de80a" - integrity sha512-LHEIG88+mwXua5wVQF0Cf3ECAjEede8R1/j+OBn11aIr1lrnKtUcuLnpFbyXnJbsaqRuE7fgJeUpJhVFFvTk2A== - dependencies: - "@coinbase/wallet-sdk" "^3.0.5" - "@web3-onboard/common" "^2.0.7" - -"@web3-onboard/common@^2.0.7", "@web3-onboard/common@^2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.0.9.tgz#b53bf12f8a644f55fe8b09c5deb73531c2b90e9c" - integrity sha512-6qTIPAmLAkhcVPtSOyIUzscJ/rq3/xI42kVt8I4ZsUErd32QjhuydIndJJHWrEFAXT/6ZY6tFH2GZix9Fe8YzQ== +"@web3-onboard/core@^2.2.9": + version "2.2.9" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.2.9.tgz#16039143b9227fd7e456bfed72f46a7f19781a2d" + integrity sha512-bxOdiqw0fnk7jR2KqArLT5qyNoGqJe6zOUJyPFXIn+clt/OLZxKB6w9/rClkjRZoARbJUw9U7oMDnkZxtWqZIw== dependencies: - "@ethereumjs/common" "2.6.2" - ethers "5.5.4" - joi "^17.4.2" - rxjs "^7.5.2" - -"@web3-onboard/core@^2.2.8": - version "2.2.8" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.2.8.tgz#0a2c6aa991ea2ac0a0a471d5ee3bbf84aafd79df" - integrity sha512-nEEQR0/EyMbtMOz2yngyr992ElbYlICm7tZOwKfvq4nknGdnkEVmx74nr80H5M6/9nfZ5gJug2v8i/M3/YxcbQ== - dependencies: - "@web3-onboard/common" "^2.0.7" + "@web3-onboard/common" "^2.1.0" bowser "^2.11.0" ethers "5.5.3" eventemitter3 "^4.0.7" @@ -2158,56 +2082,6 @@ svelte "^3.46.4" svelte-i18n "^3.3.13" -"@web3-onboard/keepkey@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@web3-onboard/keepkey/-/keepkey-2.0.3.tgz#c7a0e9242385a7ce54d7314cd402caa63751c988" - integrity sha512-q6lSTujDCc22xTejpdT44jna7ZQQBbN4YEywush+iimq9ZBP9AcNqnddxtfqZvG1R3nssPFmpO/i5w0DVpL11A== - dependencies: - "@ethersproject/providers" "^5.5.0" - "@shapeshiftoss/hdwallet-core" "^1.15.2" - "@shapeshiftoss/hdwallet-keepkey-webusb" "^1.15.2" - "@web3-onboard/common" "^2.0.7" - ethereumjs-util "^7.1.3" - -"@web3-onboard/keystone@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@web3-onboard/keystone/-/keystone-2.0.3.tgz#da34e53f3a982d5954101e1e223c589d79afbd65" - integrity sha512-FWnBMoiJmKb0ZVCCns3OoQEMh2heM8RPkZ/pnEBnKKVZg2YDyefDmr5QqYR6Zlb3x6wgP/uq2brBlbPpoH/SLg== - dependencies: - "@ethereumjs/tx" "^3.4.0" - "@ethersproject/providers" "^5.5.0" - "@keystonehq/eth-keyring" "^0.11.2-alpha.2" - "@web3-onboard/common" "^2.0.7" - -"@web3-onboard/ledger@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.0.4.tgz#306952ddce5b17c25de3e9643465083d28281218" - integrity sha512-eRh9C9/+c7Kkgk6TsSMNz1n31X5SLIn8Ip4cnxo8/z2/jS1I/KRpiKsUPXRF2X0EL0A3yhk0aCeiJR9+70sFqQ== - dependencies: - "@ethereumjs/tx" "^3.4.0" - "@ethersproject/providers" "^5.5.0" - "@ledgerhq/hw-app-eth" "^6.19.0" - "@ledgerhq/hw-transport-u2f" "^5.36.0-deprecated" - "@ledgerhq/hw-transport-webusb" "^6.19.0" - "@metamask/eth-sig-util" "^4.0.0" - "@web3-onboard/common" "^2.0.7" - buffer "^6.0.3" - ethereumjs-util "^7.1.3" - -"@web3-onboard/trezor@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@web3-onboard/trezor/-/trezor-2.0.5.tgz#9d381b05abc7861e2b2ed9283fcb04296f09b33b" - integrity sha512-ES7p7Tub5GoW/AjC8McIWsIOTKXO3NkkLjPS/VcBGslp5HM+KdRn3xmBGlGU6wQ4VGYQh66A8BJzd+27QGB7tA== - dependencies: - "@ethereumjs/tx" "^3.4.0" - "@ethersproject/providers" "^5.5.0" - "@web3-onboard/common" "^2.0.7" - buffer "^6.0.3" - eth-crypto "^2.1.0" - ethereumjs-util "^7.1.3" - hdkey "^2.0.1" - trezor-connect "^8.2.6" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" From f2e7133a3cb06076783ced9fef7281ba40dcb46a Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Sun, 29 May 2022 15:47:26 -0600 Subject: [PATCH 012/108] More cleanup and positioning --- packages/core/src/store/index.ts | 4 +- packages/core/src/types.ts | 6 +- packages/core/src/views/Index.svelte | 9 +- .../src/views/account-center/Index.svelte | 38 ++++---- .../core/src/views/notify/ChainBadge.svelte | 35 +++++++ packages/core/src/views/notify/Index.svelte | 50 +++------- .../src/views/notify/StatusIconBadge.svelte | 97 +++++++++++++++++++ packages/demo/src/App.svelte | 27 +++--- 8 files changed, 183 insertions(+), 83 deletions(-) create mode 100644 packages/core/src/views/notify/ChainBadge.svelte create mode 100644 packages/core/src/views/notify/StatusIconBadge.svelte diff --git a/packages/core/src/store/index.ts b/packages/core/src/store/index.ts index 759269f14..5cb67acbc 100644 --- a/packages/core/src/store/index.ts +++ b/packages/core/src/store/index.ts @@ -108,8 +108,8 @@ function reducer(state: AppState, action: Action): AppState { const update = payload as UpdateAccountCenterAction['payload'] return { ...state, - notify: { - ...state.notify, + accountCenter: { + ...state.accountCenter, ...update } } diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 775d1fbba..1576d6efb 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -23,7 +23,7 @@ export interface InitOptions { appMetadata?: AppMetadata i18n?: i18nOptions accountCenter?: AccountCenterOptions - notify: NotifyInitOptions + notify?: NotifyInitOptions } export interface OnboardAPI { @@ -205,13 +205,13 @@ export type NotifyEventStyles = { // TransactionHandler // } from 'bnc-sdk/dist/types/src/interfaces' -export interface NotifyOptions extends ConfigOptions { +export interface NotifyOptions { dappId?: string // transactionHandler?: TransactionHandler name?: string apiUrl?: string // onerror?: ErrorHandler - enabled: boolean + enabled?: boolean } export type NotifyInitOptions = Omit diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index b631fb785..330725038 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -9,13 +9,8 @@ const accountCenter$ = state .select('accountCenter') - .pipe(startWith(state.get().accountCenter), shareReplay(1)) - const notify$ = state - .select('notify') - .pipe(startWith(state.get().notify), shareReplay(1)) + .pipe(startWith(state.get().accountCenter), shareReplay(2)) - notify$.subscribe(x => console.log(x)) - accountCenter$.subscribe(x => console.log(x)) + +
      + {@html icon} +
      diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 41da9f21a..29d47ffad 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -2,40 +2,20 @@ import { fly } from 'svelte/transition' import { quintIn } from 'svelte/easing' import { flip } from 'svelte/animate' - import type { NotifyInitOptions, NotificationObject } from '../../types' + import type { NotifyOptions, NotificationObject } from '../../types' import CloseButton from '../shared/CloseButton.svelte' import { TransactionDescription } from 'ethers/lib/utils' import { shortenAddress, shortenEns, chainStyles } from '../../utils' import StatusIconBadge from './StatusIconBadge.svelte' import { _ } from 'svelte-i18n' import en from '../../i18n/en.json' + import { tweened } from 'svelte/motion' - // import AutoDismiss from '../components/AutoDismiss.svelte' - // import { notifications, app } from '../stores' - - export let settings: NotifyInitOptions + export let settings: { notifySettings: NotifyOptions; position: string } + const { notifySettings, position } = settings - let positioning: string let x: number let y: number - let notificationMargin: string - let justifyContent: string - - // listen for screen resize events - // window.addEventListener( - // 'resize', - // debounce(() => { - // if (window.outerWidth < 450) { - // if (!smallScreen) { - // smallScreen = true - // } - // } else { - // if (smallScreen) { - // smallScreen = false - // } - // } - // }, 300) - // ) function elasticOut(t: number): number { return ( @@ -115,7 +95,7 @@ // autoDismiss?: number } ] - import { tweened } from 'svelte/motion' + let original = 5 * 60 // TYPE NUMBER OF SECONDS HERE let timer = tweened(original) @@ -132,17 +112,13 @@ + +
      + {#if notification.type === 'pending'} +
      + {/if} + +
      +
      + {@html defaultNotifyEventStyles[notification.type]['eventIcon']} +
      +
      +
      + +
      +
      diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index 259619180..a855ffab8 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -152,18 +152,13 @@ explore: 'https://blocknative.com' }, // // example customizing account center - // accountCenter: { - // desktop: { - // position: 'topRight', - // enabled: true, - // minimal: false - // }, - // mobile: { - // position: 'topRight', - // enabled: true, - // minimal: false - // } - // } + accountCenter: { + desktop: { + position: 'topRight', + enabled: true, + minimal: false + }, + }, // example customizing copy // i18n: { // en: { @@ -174,10 +169,10 @@ // } // } // } - // notify: { - // onerror: error => console.log(`Notify error: ${error.message}`), - // enabled: true - // }, + notify: { + onerror: error => console.log(`Notify error: ${error.message}`), + enabled: true + }, dappId: '12153f55-f29e-4f11-aa07-90f10da5d778' }) From 4b14fb6c45ddb1886b28ed6cb728d720b389e96f Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Sun, 29 May 2022 15:52:46 -0600 Subject: [PATCH 013/108] Add css variables --- packages/core/src/views/notify/Index.svelte | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 29d47ffad..eb02c2f6f 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -129,7 +129,7 @@ height: 100vh; pointer-events: none; z-index: 300; - font-family: var(--onboard-font-family-normal, var(--font-family-normal)); + font-family: var(--notify-onboard-font-family-normal, var(--onboard-font-family-normal, var(--font-family-normal))); margin: 8px 0; } @@ -154,15 +154,15 @@ backdrop-filter: blur(5px); width: 100%; min-height: 56px; - background: var(--onboard-gray-600, var(--gray-600)); + background: var(--notify-onboard-gray-600, var(--onboard-gray-600, var(--gray-600))); padding: 12px; - border-radius: var(--onboard-border-radius-4, var(--border-radius-4)); + border-radius: var(--notify-onboard-border-radius-4, var(--onboard-border-radius-4, var(--border-radius-4))); margin-top: 8px; display: flex; } div.notify-transaction-data { - font-size: var(--onboard-font-size-6, var(--font-size-6)); + font-size: var(--notify-onboard-font-size-6, var(--onboard-font-size-6, var(--font-size-6))); font-family: inherit; margin: 0px 8px; justify-content: space-between; @@ -171,17 +171,17 @@ .hash-time { display: inline-flex; margin-top: 2px; - font-size: var(--onboard-font-size-7, var(--font-size-7)); - line-height: var(--onboard-line-height-4, var(--line-height-4)); + font-size: var(--notify-onboard-font-size-7, var(--onboard-font-size-7, var(--font-size-7))); + line-height: var(--notify-onboard-line-height-4, var(--onboard-line-height-4, var(--line-height-4))); } .time { - color: var(--onboard-gray-300, var(--gray-300)); + color: var(--notify-onboard-gray-300, var(--onboard-gray-300, var(--gray-300))); margin-left: 4px; } .address-hash { - color: var(--onboard-primary-400, var(--primary-400)); + color: var(--notify-onboard-primary-400, var(--onboard-primary-400, var(--primary-400))); } div.notify-close-btn { margin-left: auto; @@ -197,7 +197,7 @@ } .transaction-status { - color: var(--onboard-primary-100, var(--primary-100)); + color: var(--notify-onboard-primary-100, var(--onboard-primary-100, var(--primary-100))); line-height: 14px; } From 5c4274cb3842d7c9272f3a7452329c474f17af19 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Sun, 29 May 2022 17:29:02 -0600 Subject: [PATCH 014/108] Fix and style timer --- packages/core/README.md | 11 ++++ packages/core/src/views/Index.svelte | 2 +- packages/core/src/views/notify/Index.svelte | 71 ++++++++++---------- packages/core/src/views/notify/Timer.svelte | 72 +++++++++++++++++++++ 4 files changed, 117 insertions(+), 39 deletions(-) create mode 100644 packages/core/src/views/notify/Timer.svelte diff --git a/packages/core/README.md b/packages/core/README.md index f8b17bc92..0cc6bfc15 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -591,6 +591,17 @@ The Onboard styles can customized via [CSS variables](https://developer.mozilla. /* SPACING */ --account-select-modal-margin-4: 1rem; --account-select-modal-margin-5: 0.5rem; + + /* NOTIFY STYLES */ + --notify-onboard-font-family-normal + --notify-onboard-gray-300 + --notify-onboard-gray-600 + --notify-onboard-border-radius + --notify-onboard-font-size-7 + --notify-onboard-font-size-6 + --notify-onboard-line-height-4 + --notify-onboard-primary-100 + --notify-onboard-primary-400 } ``` diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index 330725038..8a908b945 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -9,7 +9,7 @@ const accountCenter$ = state .select('accountCenter') - .pipe(startWith(state.get().accountCenter), shareReplay(2)) + .pipe(startWith(state.get().accountCenter), shareReplay(1)) diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index eb02c2f6f..6e0e5eea0 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -10,6 +10,7 @@ import { _ } from 'svelte-i18n' import en from '../../i18n/en.json' import { tweened } from 'svelte/motion' + import Timer from './Timer.svelte' export let settings: { notifySettings: NotifyOptions; position: string } const { notifySettings, position } = settings @@ -75,21 +76,21 @@ const hash = '0xc572779D7839B998DF24fc316c89BeD3D450ED13' const currentChain = '0x89' - const statuses: NotificationObject[] = [ + const notifications: NotificationObject[] = [ { id: 'testing123', type: 'error', key: 'keytesting1', - // startTime?: number + startTime: Date.now(), eventCode: 'txPool', message: 'test message' // autoDismiss?: number }, { - id: 'testing123', + id: 'testing1232', type: 'pending', key: 'keytesting2', - // startTime?: number + startTime: Date.now(), eventCode: 'txConfirmReminder', message: 'test message' // autoDismiss?: number @@ -156,7 +157,7 @@ min-height: 56px; background: var(--notify-onboard-gray-600, var(--onboard-gray-600, var(--gray-600))); padding: 12px; - border-radius: var(--notify-onboard-border-radius-4, var(--onboard-border-radius-4, var(--border-radius-4))); + border-radius: var(--notify-onboard-border-radius, var(--onboard-border-radius-4, var(--border-radius-4))); margin-top: 8px; display: flex; } @@ -175,10 +176,6 @@ line-height: var(--notify-onboard-line-height-4, var(--onboard-line-height-4, var(--line-height-4))); } - .time { - color: var(--notify-onboard-gray-300, var(--onboard-gray-300, var(--gray-300))); - margin-left: 4px; - } .address-hash { color: var(--notify-onboard-primary-400, var(--onboard-primary-400, var(--primary-400))); @@ -202,45 +199,43 @@ } -{#if statuses.length > 0} +{#if notifications.length > 0}
        - {#each statuses as status (status.key)} + {#each notifications as notification (notification.key)} - +
      • - -
        - - {$_(`notify.transaction[${transactionMsg}]`, { - default: en.notify.transaction[transactionMsg] - })} - + class="bn-notify-custom bn-notify-notification " + in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} + out:fly={{ duration: 400, x, y, easing: quintIn }} + > + +
        + + {$_(`notify.transaction[${transactionMsg}]`, { + default: en.notify.transaction[transactionMsg] + })} + - - - - - {shortenAddress(hash)} - - - - - {seconds}s ago + + + + + {shortenAddress(hash)} + + + - -
        +
        - +
      • {/each} diff --git a/packages/core/src/views/notify/Timer.svelte b/packages/core/src/views/notify/Timer.svelte new file mode 100644 index 000000000..11f19c689 --- /dev/null +++ b/packages/core/src/views/notify/Timer.svelte @@ -0,0 +1,72 @@ + + + + +
        + {#if notification.type === 'pending' && notification.startTime} + - + + {timeString(currentTime - notification.startTime)} + + ago + {/if} +
        From 3670eb60dea70bfdc40f7bc04c33db53db0af52d Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Mon, 30 May 2022 11:02:14 -0600 Subject: [PATCH 015/108] More cleanup --- packages/core/src/types.ts | 26 --- packages/core/src/views/notify/Index.svelte | 171 +++++++++----------- 2 files changed, 76 insertions(+), 121 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 1576d6efb..ad306f8b6 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -384,19 +384,6 @@ export interface UpdateNotification { } } -export interface ConfigOptions { - system?: System - networkId?: number - mobilePosition?: 'bottom' | 'top' - desktopPosition?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight' - darkMode?: boolean - txApproveReminderTimeout?: number - txStallPendingTimeout?: number - txStallConfirmedTimeout?: number - notifyMessages?: NotifyMessages - clientLocale?: string -} - export interface Hash { (hash: string, id?: string): | never @@ -425,19 +412,6 @@ export interface Notification { } } -export interface Config { - (options: ConfigOptions): void -} - -export interface API { - hash: Hash - transaction: Transaction - account: Account - unsubscribe: Unsubscribe - notification: Notification - config: Config -} - export interface EmitterListener { (state: TransactionData): boolean | void | CustomNotificationObject } diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 6e0e5eea0..2ee87b5a0 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -9,12 +9,14 @@ import StatusIconBadge from './StatusIconBadge.svelte' import { _ } from 'svelte-i18n' import en from '../../i18n/en.json' - import { tweened } from 'svelte/motion' import Timer from './Timer.svelte' + import { internalState$ } from '../../streams' export let settings: { notifySettings: NotifyOptions; position: string } const { notifySettings, position } = settings + const { appMetadata } = internalState$.getValue() + let x: number let y: number @@ -25,54 +27,23 @@ ) } - // $: if ($app.desktopPosition && !smallScreen) { - // positioning = - // $app.desktopPosition === 'bottomRight' - // ? 'bottom: 0; right: 0;' - // : $app.desktopPosition === 'bottomLeft' - // ? 'left: 0; right: unset;' - // : $app.desktopPosition === 'topRight' - // ? 'top: 0;' - // : 'top: 0; bottom: unset; left: 0; right: unset;' - - // x = positioning && positioning.includes('left') ? -321 : 321 - // y = 0 - - // if ($app.desktopPosition.includes('top')) { - // justifyContent = 'justify-content: unset;' - // notificationMargin = 'margin: 0.75rem 0 0 0;' - // } else { - // justifyContent = 'justify-content: flex-end;' - // notificationMargin = 'margin: 0 0 0.75rem 0;' - // } - // } - - // $: if ($app.mobilePosition && smallScreen) { - // positioning = - // $app.mobilePosition === 'top' - // ? 'top: 0; bottom: unset;' - // : 'bottom: 0; top: unset;' + x = position && position.includes('left') ? -321 : 321 + y = 0 - // x = 0 + $: if ($app.mobilePosition && smallScreen) { + x = 0 - // if ($app.mobilePosition === 'top') { - // y = -50 - // justifyContent = 'justify-content: unset;' - // notificationMargin = 'margin: 0.75rem 0 0 0;' - // } else { - // y = 50 - // justifyContent = 'justify-content: flex-end;' - // notificationMargin = 'margin: 0 0 0.75rem 0;' - // } - // } + if ($app.mobilePosition === 'top') { + y = -50 + } else { + y = 50 + } + } - // $: if (!$app.desktopPosition && !$app.mobilePosition) { - // x = smallScreen ? 0 : 321 - // y = smallScreen ? 50 : 0 - // notificationMargin = 'margin: 0 0 0.75rem 0;' - // justifyContent = 'justify-content: flex-end;' - // positioning = 'bottom: 0; right: 0;' - // } + $: if (!$app.desktopPosition && !$app.mobilePosition) { + x = smallScreen ? 0 : 321 + y = smallScreen ? 50 : 0 + } const hash = '0xc572779D7839B998DF24fc316c89BeD3D450ED13' const currentChain = '0x89' @@ -96,20 +67,6 @@ // autoDismiss?: number } ] - - let original = 5 * 60 // TYPE NUMBER OF SECONDS HERE - let timer = tweened(original) - - // ------ dont need to modify code below - setInterval(() => { - if ($timer > 0) $timer++ - }, 1000) - - $: minutes = Math.floor($timer / 60) - $: minname = minutes > 1 ? 'mins' : 'min' - $: seconds = Math.floor($timer - minutes * 60) - - const transactionMsg = 'txPool' @@ -209,33 +189,34 @@ {#each notifications as notification (notification.key)} -
      • - -
        - - {$_(`notify.transaction[${transactionMsg}]`, { - default: en.notify.transaction[transactionMsg] - })} - - - - - - - {shortenAddress(hash)} - - - - -
        + animate:flip={{ duration: 500 }} + class="bn-notify-custom bn-notify-notification {`bn-notify-notification-${notification.type}`} + {appMetadata.name ? `bn-notify-${appMetadata.name}` : ''}" + in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} + out:fly={{ duration: 400, x, y, easing: quintIn }} + > + +
        + + {$_(`notify.transaction[${transactionMsg}]`, { + default: en.notify.transaction[transactionMsg] + })} + + + + + + + {shortenAddress(hash)} + + + + +
        +
      • - -
        - - {$_(`notify.transaction[${transactionMsg}]`, { - default: en.notify.transaction[transactionMsg] - })} - - - - - - - {shortenAddress(hash)} - - - - -
        - - - -
        + --> +
      • diff --git a/packages/core/src/views/notify/NotificationContent.svelte b/packages/core/src/views/notify/NotificationContent.svelte new file mode 100644 index 000000000..465817bd8 --- /dev/null +++ b/packages/core/src/views/notify/NotificationContent.svelte @@ -0,0 +1,79 @@ + + + + +
        + + {$_(`notify.transaction[${notification.eventCode}]`, { + default: en.notify.transaction[notification.eventCode] + })} + + + + + + + {shortenAddress(hash)} + + + + +
        + diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 68352ba6d..5ec89accc 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -1027,10 +1027,10 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@web3-onboard/common@^2.0.7": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.0.9.tgz#b53bf12f8a644f55fe8b09c5deb73531c2b90e9c" - integrity sha512-6qTIPAmLAkhcVPtSOyIUzscJ/rq3/xI42kVt8I4ZsUErd32QjhuydIndJJHWrEFAXT/6ZY6tFH2GZix9Fe8YzQ== +"@web3-onboard/common@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.1.0.tgz#6ff5c6841e4261743ad6ea4c5aed77c146410ce7" + integrity sha512-60Fyh+XfkvAEE21FudLFNrxt7SjTkawR8ogKNg9AsBfFwr6zaNam+yL8u3P/7U9WxTw8qPm4SgiljEaDx4tvag== dependencies: "@ethereumjs/common" "2.6.2" ethers "5.5.4" From 0d028080bf2840b8f553dfac5ec4a36bc6ee64a8 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 31 May 2022 11:31:14 -0600 Subject: [PATCH 017/108] cleanup --- packages/core/src/store/index.ts | 1 + packages/core/src/views/notify/Index.svelte | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/core/src/store/index.ts b/packages/core/src/store/index.ts index 396541cd0..a2ee6d0db 100644 --- a/packages/core/src/store/index.ts +++ b/packages/core/src/store/index.ts @@ -15,6 +15,7 @@ import type { UpdateAccountAction, UpdateAccountCenterAction, UpdateNotifyAction, + UpdateNotificationsAction, Locale } from '../types' diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 0977c79c0..ae48ca82d 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -7,9 +7,7 @@ import { shortenAddress, shortenEns, chainStyles } from '../../utils' import StatusIconBadge from './StatusIconBadge.svelte' import { _ } from 'svelte-i18n' - import en from '../../i18n/en.json' - import Timer from './Timer.svelte' - import { internalState$, wallets$ } from '../../streams' + import { internalState$ } from '../../streams' import NotificationContent from './NotificationContent.svelte' export let settings: { notifySettings: NotifyOptions; position: string } From e69889572cbab24adb5a800f5884223ea3be73aa Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 31 May 2022 12:02:21 -0600 Subject: [PATCH 018/108] Add flags to denote v1 ref code --- packages/core/src/types.ts | 2 ++ packages/core/src/validation.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index d12cf8801..c168d2037 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -204,6 +204,8 @@ export type NotifyEventStyles = { } +// Notify V1 + // import type { // BitcoinTransactionLog, diff --git a/packages/core/src/validation.ts b/packages/core/src/validation.ts index 8e3b7eb95..b590a0a48 100644 --- a/packages/core/src/validation.ts +++ b/packages/core/src/validation.ts @@ -233,7 +233,7 @@ export function validateLocale(data: string): ValidateReturn { -// Notify Validations +// Notify V1 Validations import type { TransactionOptions, From 20f80a4fc8353aea7fb04e1d6117f322123b0aca Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Fri, 3 Jun 2022 11:11:24 +1000 Subject: [PATCH 019/108] Playing around with organisation --- packages/core/src/types.ts | 23 +++++++++--------- packages/core/src/views/Index.svelte | 22 ++++++++++++++++- .../src/views/account-center/Index.svelte | 24 ++++--------------- packages/core/src/views/notify/Index.svelte | 8 +++---- 4 files changed, 41 insertions(+), 36 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index c168d2037..68f05cf0b 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -118,15 +118,15 @@ export type AccountCenterPosition = | 'topLeft' export type AccountCenter = { - enabled: boolean - position?: AccountCenterPosition - expanded?: boolean - minimal?: boolean + enabled: boolean + position?: AccountCenterPosition + expanded?: boolean + minimal?: boolean } - + export type AccountCenterOptions = { - desktop: Omit - mobile: Omit + desktop: Omit + mobile: Omit } // ==== ACTIONS ==== // @@ -203,10 +203,8 @@ export type NotifyEventStyles = { eventIcon: string } - // Notify V1 - // import type { // BitcoinTransactionLog, // EthereumTransactionLog, @@ -222,7 +220,10 @@ export interface NotifyOptions { enabled?: boolean } -export type NotifyInitOptions = Omit +export type NotifyInitOptions = Omit< + NotifyOptions, + 'dappId' | 'name' | 'apiUrl' +> // export type ErrorHandler = (error: SDKError) => void @@ -323,7 +324,7 @@ export interface ContractCall { export interface DecodedContractCall { contractAddress?: string contractType?: string - params: object + params: Record methodName: string } diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index 8a908b945..374a242fb 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -6,11 +6,15 @@ import SwitchChain from './chain/SwitchChain.svelte' import ActionRequired from './connect/ActionRequired.svelte' import AccountCenter from './account-center/Index.svelte' + import Notify from './notify/Index.svelte' const accountCenter$ = state .select('accountCenter') .pipe(startWith(state.get().accountCenter), shareReplay(1)) + const notify$ = state + .select('notify') + .pipe(startWith(state.get().notify), shareReplay(1)) -{#if notifications.length > 0} +{#if $notifications$.length}
          - {#each notifications as notification (notification.key)} + {#each $notifications$ as notification (notification.key)} @@ -170,20 +148,20 @@ - + {:else} - + {/if}
          - import type { NotificationObject } from '../../types' + import type { Notification } from '../../types' import { shortenAddress, shortenEns } from '../../utils' import { _ } from 'svelte-i18n' import en from '../../i18n/en.json' import Timer from './Timer.svelte' - export let notification: NotificationObject - export let hash: string - + export let notification: Notification
          + class="time bn-notify-custom bn-notify-notification-info {appMetadata.name + ? `bn-notify-${appMetadata.name}` + : ''}" +> {#if notification.type === 'pending' && notification.startTime} - import { fade } from 'svelte/transition' import { onDestroy, onMount } from 'svelte' - import { internalState } from '../../internals' + import { configuration } from '../../configuration' - const { device } = internalState + const { device } = configuration const body = document.body const html = document.documentElement diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 42fd21de9..7b5874070 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -1163,10 +1163,9 @@ bn.js@^5.1.2, bn.js@^5.2.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== -bnc-sdk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.2.0.tgz#cabc70eaf4a49dd2f695c6fcee50c833aa2af6b2" - integrity sha512-uoe40jLL+eYxeCAOqLgWLOowU9kyUuXyLURVgSSfIBjUNuszlz+I2wZYtvdWF+YkYphSr7L3E6WFtmwFrne+Pw== +"bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": + version "4.2.0-0.2.0" + resolved "https://github.com/blocknative/sdk#eeea5977c87e33d4b01c5e1fc07635889fcb8327" dependencies: crypto-es "^1.2.2" nanoid "^3.3.1" diff --git a/packages/demo/package.json b/packages/demo/package.json index 64b6a02b5..f322bc8a2 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -22,7 +22,7 @@ "webpack-dev-server": "4.7.4" }, "dependencies": { - "@web3-onboard/core": "2.3.0-alpha.1", + "@web3-onboard/core": "^2.2.10", "@web3-onboard/coinbase": "^2.0.3", "@web3-onboard/fortmatic": "^2.0.2", "@web3-onboard/gnosis": "^2.0.1", diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index a855ffab8..ce4a93c16 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -157,7 +157,7 @@ position: 'topRight', enabled: true, minimal: false - }, + } }, // example customizing copy // i18n: { @@ -170,10 +170,12 @@ // } // } notify: { - onerror: error => console.log(`Notify error: ${error.message}`), - enabled: true + enabled: true, + transactionHandler: transaction => { + console.log({ transaction }) + } }, - dappId: '12153f55-f29e-4f11-aa07-90f10da5d778' + apiKey: '12153f55-f29e-4f11-aa07-90f10da5d778' }) // Subscribe to wallet updates diff --git a/packages/magic/README.md b/packages/magic/README.md index acea77fe2..cab623833 100644 --- a/packages/magic/README.md +++ b/packages/magic/README.md @@ -5,8 +5,9 @@ ### Login options - **Email** - The Magic module comes with a built in email login modal that is customizable -in the same fashion that all other web3-onboard UI components are -* note: The Magic Module currently only supports email login but we are open to expand to sms or socials* + in the same fashion that all other web3-onboard UI components are + +* note: The Magic Module currently only supports email login but we are open to expand to sms or socials\* ### Install @@ -19,7 +20,7 @@ Head over to https://magic.link/ and sign up to get an API key ```typescript type MagicInitOptions = { apiKey: string - userEmail?: string // optional - if user has already logged in and/or session is still active a login modal will not appear + userEmail?: string // optional - if user has already logged in and/or session is still active a login modal will not appear } ``` @@ -29,7 +30,10 @@ type MagicInitOptions = { import Onboard from '@web3-onboard/core' import magicModule from '@web3-onboard/magic' -const magic = magicModule({ apiKey: 'API_KEY', userEmail: localStorage.getItem('magicUserEmail') }) +const magic = magicModule({ + apiKey: 'API_KEY', + userEmail: localStorage.getItem('magicUserEmail') +}) const onboard = Onboard({ // ... other Onboard options @@ -43,22 +47,25 @@ const connectedWallets = await onboard.connectWallet() console.log(connectedWallets) ``` -### Accessing the Magic Wallet Internals -When a Magic wallet is connected the Magic instance is exposed. +### Accessing the Magic Wallet configuration + +When a Magic wallet is connected the Magic instance is exposed. This can be used to get information such as user MetaData, update a user's email address or handle the user's token. -The user's email can be set in local storage and passed through the `MagicInitOptions` to avoid a user having to login again if they are returning to the DApp within the set user session time. +The user's email can be set in local storage and passed through the `MagicInitOptions` to avoid a user having to login again if they are returning to the DApp within the set user session time. Magic has a default time of 7 days and this can be configured through your Magic API Key settings. + ```typescript const [magicWallet] = await onboard.connectWallet() try { - const { email, publicAddress } = await magicWallet.instance.user.getMetadata(); - localStorage.setItem('magicUserEmail', email) + const { email, publicAddress } = await magicWallet.instance.user.getMetadata() + localStorage.setItem('magicUserEmail', email) // This email can then be passed through the MagicInitOptions to continue the users session and avoid having to login again } catch { // Handle errors if required! } ``` + For full documentation and examples please visit [Magic's official docs](https://magic.link/docs/api-reference/client-side-sdks/web#user-module) ## Custom Styling @@ -95,4 +102,4 @@ The Magic Wallet Login styles can customized via [CSS variables](https://develop --onboard-login-modal-left } -``` \ No newline at end of file +``` diff --git a/yarn.lock b/yarn.lock index cd99bdc0b..0ef42bb51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2066,22 +2066,6 @@ dependencies: "@walletconnect/window-getters" "^1.0.0" -"@web3-onboard/core@^2.2.9": - version "2.2.9" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.2.9.tgz#16039143b9227fd7e456bfed72f46a7f19781a2d" - integrity sha512-bxOdiqw0fnk7jR2KqArLT5qyNoGqJe6zOUJyPFXIn+clt/OLZxKB6w9/rClkjRZoARbJUw9U7oMDnkZxtWqZIw== - dependencies: - "@web3-onboard/common" "^2.1.0" - bowser "^2.11.0" - ethers "5.5.3" - eventemitter3 "^4.0.7" - joi "17.6.0" - lodash.merge "^4.6.2" - lodash.partition "^4.6.0" - rxjs "^7.5.2" - svelte "^3.46.4" - svelte-i18n "^3.3.13" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -2817,6 +2801,15 @@ bnb-javascript-sdk-nobroadcast@^2.16.14: uuid "^3.3.2" websocket-stream "^5.5.0" +"bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": + version "4.2.0-0.2.0" + resolved "https://github.com/blocknative/sdk#eeea5977c87e33d4b01c5e1fc07635889fcb8327" + dependencies: + crypto-es "^1.2.2" + nanoid "^3.3.1" + rxjs "^6.6.3" + sturdy-websocket "^0.1.12" + body-parser@1.19.2, body-parser@^1.16.0: version "1.19.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" @@ -3546,6 +3539,11 @@ crypto-browserify@3.12.0, crypto-browserify@^3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-es@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" + integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== + crypto-js@^3.1.9-1: version "3.3.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" @@ -6353,6 +6351,11 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -8707,6 +8710,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +sturdy-websocket@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" + integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== + dependencies: + lodash.defaults "^4.2.0" + superstruct@^0.10.12: version "0.10.13" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.10.13.tgz#705535a5598ff231bd976601a7b6b534a71a821b" From ca70f462b853d55ac6a44eb927fed97b6aa203cf Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Tue, 7 Jun 2022 15:31:33 +1000 Subject: [PATCH 023/108] Working notifications --- packages/core/src/notify.ts | 28 +- packages/core/src/provider.ts | 1 - packages/core/src/services.ts | 3 + packages/core/src/utils.ts | 13 + packages/core/src/validation.ts | 1 + packages/core/src/views/Index.svelte | 58 +- .../src/views/account-center/Index.svelte | 54 +- packages/core/src/views/connect/Index.svelte | 10 +- packages/core/src/views/notify/Index.svelte | 36 +- packages/core/yarn.lock | 2714 ----------------- yarn.lock | 2 +- 11 files changed, 105 insertions(+), 2815 deletions(-) delete mode 100644 packages/core/yarn.lock diff --git a/packages/core/src/notify.ts b/packages/core/src/notify.ts index 3f06488a0..7477ec7e0 100644 --- a/packages/core/src/notify.ts +++ b/packages/core/src/notify.ts @@ -3,31 +3,31 @@ import { get } from 'svelte/store' import { _ } from 'svelte-i18n' import defaultCopy from './i18n/en.json' import type { EthereumTransactionData } from 'bnc-sdk' -import type { Observable } from 'rxjs' import type { CustomNotification, Notification, NotificationType } from './types' -import { configuration } from './configuration' + import { validateTransactionHandlerReturn } from './validation' import { state } from './store' +import { addNotification } from './store/actions' export function handleTransactionUpdates( - transactions$: Observable + transaction: EthereumTransactionData ): void { - transactions$.subscribe(transaction => { - const customized = state.get().notify.transactionHandler(transaction) - const invalid = validateTransactionHandlerReturn(customized) + const customized = state.get().notify.transactionHandler(transaction) + const invalid = validateTransactionHandlerReturn(customized) + + if (invalid) { + console.error(invalid) + return + } - if (invalid) { - console.error(invalid) - return - } + const notification = transactionEventToNotification(transaction, customized) - const notification = transactionEventToNotification(transaction, customized) - }) + addNotification(notification) } export function transactionEventToNotification( @@ -65,7 +65,7 @@ export function transactionEventToNotification( const formatterOptions = counterparty && value ? { - messageId: `watched['${eventCode}']`, + messageId: `notify.watched['${eventCode}']`, values: { verb: eventCode === 'txConfirmed' @@ -82,7 +82,7 @@ export function transactionEventToNotification( } } : { - messageId: `transaction['${eventCode}']`, + messageId: `notify.transaction['${eventCode}']`, values: { formattedValue, asset } } diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts index b142e3f9e..98d1252d4 100644 --- a/packages/core/src/provider.ts +++ b/packages/core/src/provider.ts @@ -20,7 +20,6 @@ import { updateAccount, updateWallet } from './store/actions' import { validEnsChain } from './utils' import disconnect from './disconnect' import { state } from './store' -import { configuration } from './configuration' import { getBlocknativeSdk } from './services' export const ethersProviders: { diff --git a/packages/core/src/services.ts b/packages/core/src/services.ts index 80d57016b..5b86f27c7 100644 --- a/packages/core/src/services.ts +++ b/packages/core/src/services.ts @@ -1,5 +1,6 @@ import type { MultichainSDK } from 'bnc-sdk' import { configuration } from './configuration' +import { handleTransactionUpdates } from './notify' let blocknativeSdk: MultichainSDK @@ -17,6 +18,8 @@ export async function getBlocknativeSdk(): Promise { blocknativeSdk = new MultichainSDK({ apiKey: configuration.apiKey }) + + blocknativeSdk.transactions$.subscribe(handleTransactionUpdates) } return blocknativeSdk diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index dd659b97e..f845982e3 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -94,6 +94,19 @@ export const chainIdToLabel: Record = { '0xa4b1': 'Arbitrum' } +export const networkToChainId: Record = { + main: '0x1', + ropsten: '0x3', + rinkeby: '0x4', + goerli: '0x5', + kovan: '0x2a', + xdai: '0x64', + 'bsc-main': '0x38', + 'matic-main': '0x89', + 'fantom-main': '0xfa', + 'matic-mumbai': '0x80001' +} + export const chainStyles: Record = { '0x1': { icon: ethereumIcon, diff --git a/packages/core/src/validation.ts b/packages/core/src/validation.ts index 31858e40e..af5d1dc9c 100644 --- a/packages/core/src/validation.ts +++ b/packages/core/src/validation.ts @@ -176,6 +176,7 @@ const notification = Joi.object({ eventCode: Joi.string().required(), message: Joi.string().required(), autoDismiss: Joi.number().required(), + network: Joi.string().required(), startTime: Joi.number() }) diff --git a/packages/core/src/views/Index.svelte b/packages/core/src/views/Index.svelte index 374a242fb..24b81545a 100644 --- a/packages/core/src/views/Index.svelte +++ b/packages/core/src/views/Index.svelte @@ -15,6 +15,13 @@ const notify$ = state .select('notify') .pipe(startWith(state.get().notify), shareReplay(1)) + + const accountCenterPositions = { + topLeft: 'top: 0; left: 0;', + topRight: 'top: 0; right: 0;', + bottomRight: 'bottom: 0; right: 0;', + bottomLeft: 'bottom: 0; left: 0;' + } {#if $connectWallet$.inProgress} @@ -254,22 +273,23 @@ {/if} -{#if $accountCenter$.enabled && $wallets$.length} - - {#if $notify$.enabled} - {#if $accountCenter$.position.includes('bottom')} - - {:else} - - {/if} - {/if} - -{/if} +
          + {#if $notify$.enabled && $accountCenter$.position.includes('bottom')} + + {/if} + + {#if $accountCenter$.enabled && $wallets$.length} + + {/if} + + {#if $notify$.enabled && $accountCenter$.position.includes('top')} + + {/if} +
          diff --git a/packages/core/src/views/account-center/Index.svelte b/packages/core/src/views/account-center/Index.svelte index fbf26507f..f98af7de2 100644 --- a/packages/core/src/views/account-center/Index.svelte +++ b/packages/core/src/views/account-center/Index.svelte @@ -8,13 +8,6 @@ export let settings: AccountCenter - const accountCenterPositions = { - topLeft: 'top: 0; left: 0;', - topRight: 'top: 0; right: 0;', - bottomRight: 'bottom: 0; right: 0;', - bottomLeft: 'bottom: 0; left: 0;' - } - onDestroy(minimize) function minimize() { @@ -24,42 +17,15 @@ } - - -
          - - - - {#if !settings.expanded && !settings.minimal} - - - {:else if !settings.expanded && settings.minimal} - - - {:else} - - - {/if} - - - -
          +{#if !settings.expanded && !settings.minimal} + + +{:else if !settings.expanded && settings.minimal} + + +{:else} + + +{/if} diff --git a/packages/core/src/views/connect/Index.svelte b/packages/core/src/views/connect/Index.svelte index 14997fd06..d0145dbcd 100644 --- a/packages/core/src/views/connect/Index.svelte +++ b/packages/core/src/views/connect/Index.svelte @@ -176,24 +176,20 @@ return } + const chain = await getChainId(provider) + if (state.get().notify.enabled) { const sdk = await getBlocknativeSdk() if (sdk) { - const wallet = state - .get() - .wallets.find(wallet => wallet.label === label) - sdk.subscribe({ id: address, - chainId: wallet.chains[0].id, + chainId: chain, type: 'account' }) } } - const chain = await getChainId(provider) - const update: Pick = { accounts: [{ address, ens: null, balance: null }], chains: [{ namespace: 'evm', id: chain }] diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 931ad2c52..cff170688 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -4,17 +4,23 @@ import { flip } from 'svelte/animate' import type { NotifyOptions, Notification } from '../../types' import CloseButton from '../shared/CloseButton.svelte' - import { shortenAddress, shortenEns, chainStyles } from '../../utils' + import { + shortenAddress, + shortenEns, + chainStyles, + networkToChainId + } from '../../utils' import StatusIconBadge from './StatusIconBadge.svelte' import { _ } from 'svelte-i18n' import NotificationContent from './NotificationContent.svelte' import { configuration } from '../../configuration' import { state } from '../../store' + import { removeNotification } from '../../store/actions' + import { startWith } from 'rxjs' export let position: string - const { appMetadata } = configuration - const notifications$ = state.select('notifications') + const notifications$ = state.select('notifications').pipe(startWith([])) let x: number let y: number @@ -135,12 +141,14 @@ };`} > {#each $notifications$ as notification (notification.key)} - -
        • notification.onclick && notification.onclick(e)} class="bn-notify-custom bn-notify-notification {`bn-notify-notification-${notification.type}`} - {appMetadata.name ? `bn-notify-${appMetadata.name}` : ''}" + {configuration.appMetadata.name + ? `bn-notify-${configuration.appMetadata.name}` + : ''}" in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} out:fly={{ duration: 400, x, y, easing: quintIn }} > @@ -148,24 +156,22 @@ {:else} {/if} - +
          diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock deleted file mode 100644 index 7b5874070..000000000 --- a/packages/core/yarn.lock +++ /dev/null @@ -1,2714 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/highlight@^7.10.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@ethereumjs/common@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.2.tgz#eb006c9329c75c80f634f340dc1719a5258244df" - integrity sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" - -"@ethersproject/abi@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" - integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/abi@^5.5.0": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.2.tgz#f2956f2ac724cd720e581759d9e3840cd9744818" - integrity sha512-40Ixjhy+YzFtnvzIqFU13FW9hd1gMoLa3cJfSDnfnL4o8EnEG1qLiV8sNJo3sHYi9UYMfFeRuZ7kv5+vhzU7gQ== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/abstract-provider@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" - integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - -"@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" - integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - -"@ethersproject/abstract-signer@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" - integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - -"@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.1.tgz#54df786bdf1aabe20d0ed508ec05e0aa2d06674f" - integrity sha512-xhSLo6y0nGJS7NxfvOSzCaWKvWb1TLT7dQ0nnpHZrDnC67xfnWm9NXflTMFPUXXMtjr33CdV0kWDEmnbrQZ74Q== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/address@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" - integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - -"@ethersproject/address@^5.5.0", "@ethersproject/address@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" - integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - -"@ethersproject/base64@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" - integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - -"@ethersproject/base64@^5.5.0", "@ethersproject/base64@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" - integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== - dependencies: - "@ethersproject/bytes" "^5.6.0" - -"@ethersproject/basex@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" - integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - -"@ethersproject/basex@^5.5.0", "@ethersproject/basex@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" - integrity sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/bignumber@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" - integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - bn.js "^4.11.9" - -"@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.1.tgz#d5e0da518eb82ab8d08ca9db501888bbf5f0c8fb" - integrity sha512-UtMeZ3GaUuF9sx2u9nPZiPP3ULcAFmXyvynR7oHl/tPrM+vldZh7ocMsoa1PqKYGnQnqUZJoqxZnGN6J0qdipA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - bn.js "^4.11.9" - -"@ethersproject/bytes@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" - integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/bytes@^5.5.0", "@ethersproject/bytes@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" - integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/constants@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" - integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - -"@ethersproject/constants@^5.5.0", "@ethersproject/constants@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" - integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - -"@ethersproject/contracts@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" - integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== - dependencies: - "@ethersproject/abi" "^5.5.0" - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - -"@ethersproject/hash@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" - integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/hash@^5.5.0", "@ethersproject/hash@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" - integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/hdnode@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" - integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@ethersproject/hdnode@^5.5.0", "@ethersproject/hdnode@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.1.tgz#37fa1eb91f6e20ca39cc5fcb7acd3da263d85dab" - integrity sha512-6IuYDmbH5Bv/WH/A2cUd0FjNr4qTLAvyHAECiFZhNZp69pPvU7qIDwJ7CU7VAkwm4IVBzqdYy9mpMAGhQdwCDA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/wordlists" "^5.6.0" - -"@ethersproject/json-wallets@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" - integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/json-wallets@^5.5.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" - integrity sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hdnode" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" - integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - js-sha3 "0.8.0" - -"@ethersproject/keccak256@^5.5.0", "@ethersproject/keccak256@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" - integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== - dependencies: - "@ethersproject/bytes" "^5.6.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" - integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== - -"@ethersproject/logger@^5.5.0", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/networks@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" - integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.6.0": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.2.tgz#2bacda62102c0b1fcee408315f2bed4f6fbdf336" - integrity sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/pbkdf2@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" - integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - -"@ethersproject/pbkdf2@^5.5.0", "@ethersproject/pbkdf2@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" - integrity sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - -"@ethersproject/properties@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" - integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/properties@^5.5.0", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/providers@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.2.tgz#131ccf52dc17afd0ab69ed444b8c0e3a27297d99" - integrity sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/providers@5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" - integrity sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" - integrity sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/random@^5.5.0", "@ethersproject/random@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" - integrity sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/rlp@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" - integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/rlp@^5.5.0", "@ethersproject/rlp@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" - integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/sha2@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" - integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - hash.js "1.1.7" - -"@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" - integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" - integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/signing-key@^5.5.0", "@ethersproject/signing-key@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.1.tgz#31b0a531520616254eb0465b9443e49515c4d457" - integrity sha512-XvqQ20DH0D+bS3qlrrgh+axRMth5kD1xuvqUQUTeezxUTXBOeR6hWz2/C6FBEu39FRytyybIWrYf7YLSAKr1LQ== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" - integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/strings@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" - integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/strings@^5.5.0", "@ethersproject/strings@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" - integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/transactions@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" - integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - -"@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" - integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - -"@ethersproject/units@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" - integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/wallet@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" - integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/json-wallets" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@ethersproject/web@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" - integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== - dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/web@^5.5.0", "@ethersproject/web@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" - integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== - dependencies: - "@ethersproject/base64" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/wordlists@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" - integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/wordlists@^5.5.0", "@ethersproject/wordlists@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" - integrity sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@formatjs/ecma402-abstract@1.11.4": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda" - integrity sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw== - dependencies: - "@formatjs/intl-localematcher" "0.2.25" - tslib "^2.1.0" - -"@formatjs/fast-memoize@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz#e6f5aee2e4fd0ca5edba6eba7668e2d855e0fc21" - integrity sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg== - dependencies: - tslib "^2.1.0" - -"@formatjs/icu-messageformat-parser@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz#a54293dd7f098d6a6f6a084ab08b6d54a3e8c12d" - integrity sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw== - dependencies: - "@formatjs/ecma402-abstract" "1.11.4" - "@formatjs/icu-skeleton-parser" "1.3.6" - tslib "^2.1.0" - -"@formatjs/icu-skeleton-parser@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964" - integrity sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg== - dependencies: - "@formatjs/ecma402-abstract" "1.11.4" - tslib "^2.1.0" - -"@formatjs/intl-localematcher@0.2.25": - version "0.2.25" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a" - integrity sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA== - dependencies: - tslib "^2.1.0" - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@niceties/logger@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@niceties/logger/-/logger-1.1.3.tgz#f560e9e12c7d3c946d369ee1f9a5668a2767c95f" - integrity sha512-OdqmQMMvCiMFiHcjqhsw2D07mwNsqVQEKVbi5J2XrRX5gWPRVnEzp0nF0dtcSwfWOS8oyIHs7Z7b+x2q73sgPA== - dependencies: - kleur "^4.1.4" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@rollup-extras/plugin-copy@~1.2.2": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@rollup-extras/plugin-copy/-/plugin-copy-1.2.5.tgz#f24faa1cab4d6eeb7b2f3f0fb25c570323f35318" - integrity sha512-AhfFUh0MYgW+VVRGNy1KsobCFy1AdibHBBLvhTQdAAdXuZ5cAQemtZve4wBTP/xJf8ODf8xyAzS5uVhkFD12oA== - dependencies: - "@niceties/logger" "^1.1.3" - "@rollup-extras/utils" "^1.2.3" - "@types/glob" "^7.2.0" - "@types/glob-parent" "^5.1.1" - glob "^7.2.0" - glob-parent "^6.0.2" - glob-promise "^4.2.2" - -"@rollup-extras/utils@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rollup-extras/utils/-/utils-1.2.3.tgz#babca15a776dfd452d3a4be8268d3cc30b747247" - integrity sha512-P1hLRkaXjs/iU1y2zcGkXCAbe5eDNlyvz/KwztVBgqxxqyRORjjHfIQA9orhsB4QoAfvpDVKKU6Bfu4NBX4SBg== - dependencies: - "@niceties/logger" "^1.1.3" - -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^11.0.0": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/plugin-replace@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-3.1.0.tgz#d31e3a90c6b47064f3c9f2ce0ded5bcf0d3b82f6" - integrity sha512-pA3XRUrSKybVYqmH5TqWNZpGxF+VV+1GrYchKgCNIj2vsSOX7CVm2RCtx8p2nrC7xvkziYyK+lSi74T93MU3YA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/plugin-typescript@^8.0.0": - version "8.3.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.3.2.tgz#e1b719e2ed3e752bbc092001656c48378f2d15f0" - integrity sha512-MtgyR5LNHZr3GyN0tM7gNO9D0CS+Y+vflS4v/PHmrX17JCkHUYKvQ5jN5o3cz1YKllM3duXUqu3yOHwMPUxhDg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - resolve "^1.17.0" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@tsconfig/svelte@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/svelte/-/svelte-2.0.1.tgz#0e8d7caa693e9b2afce5e622c0475bb0fd89c12c" - integrity sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A== - -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/glob-parent@^5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/glob-parent/-/glob-parent-5.1.1.tgz#eb83d64824374495437b450d45e24ec53a7ce844" - integrity sha512-r2rwLjU4mYJmX3S81d8KxCboZOGPVEN5hvtYKzQ0aFNRhYir3DIVf8Hlznr65Wk748swi6hhccsDo3MyydHb2A== - -"@types/glob@^7.1.3", "@types/glob@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/json-schema@^7.0.7": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/lodash.merge@^4.6.6": - version "4.6.7" - resolved "https://registry.yarnpkg.com/@types/lodash.merge/-/lodash.merge-4.6.7.tgz#0af6555dd8bc6568ef73e5e0d820a027362946b1" - integrity sha512-OwxUJ9E50gw3LnAefSHJPHaBLGEKmQBQ7CZe/xflHkyy/wH2zVyEIAKReHvVrrn7zKdF58p16We9kMfh7v0RRQ== - dependencies: - "@types/lodash" "*" - -"@types/lodash.partition@^4.6.6": - version "4.6.7" - resolved "https://registry.yarnpkg.com/@types/lodash.partition/-/lodash.partition-4.6.7.tgz#7c4bcfa30e2cd945466401855eb5593a848fadff" - integrity sha512-tRAQtiQkNfMLPInsv+o/3vXR/YUj8YaqzFh/bdlTdVYvuydU817+dX/dM7N7sQWMQ2PgF4ziHILuvlvW4aHnnw== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*": - version "4.14.182" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" - integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*": - version "17.0.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" - integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== - -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - -"@types/pug@^2.0.4": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" - integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/sass@^1.16.0": - version "1.43.1" - resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" - integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== - dependencies: - "@types/node" "*" - -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^4.31.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.31.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -"@web3-onboard/common@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.1.0.tgz#6ff5c6841e4261743ad6ea4c5aed77c146410ce7" - integrity sha512-60Fyh+XfkvAEE21FudLFNrxt7SjTkawR8ogKNg9AsBfFwr6zaNam+yL8u3P/7U9WxTw8qPm4SgiljEaDx4tvag== - dependencies: - "@ethereumjs/common" "2.6.2" - ethers "5.5.4" - joi "^17.4.2" - rxjs "^7.5.2" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -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" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.1.2, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -"bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": - version "4.2.0-0.2.0" - resolved "https://github.com/blocknative/sdk#eeea5977c87e33d4b01c5e1fc07635889fcb8327" - dependencies: - crypto-es "^1.2.2" - nanoid "^3.3.1" - rxjs "^6.6.3" - sturdy-websocket "^0.1.12" - -bowser@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -buffer-crc32@^0.2.5: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.4.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-es@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" - integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== - -debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -elliptic@6.5.4, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -es6-promise@^3.1.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.3.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-plugin-svelte3@^3.2.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz#3618700333c8f8f12e28aec93bf18440d44a61fd" - integrity sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - dependencies: - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereumjs-util@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" - integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -ethers@5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.3.tgz#1e361516711c0c3244b6210e7e3ecabf0c75fca0" - integrity sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g== - dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.2" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.2" - "@ethersproject/random" "5.5.1" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.1" - "@ethersproject/wordlists" "5.5.0" - -ethers@5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.4.tgz#e1155b73376a2f5da448e4a33351b57a885f4352" - integrity sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw== - dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.2" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.3" - "@ethersproject/random" "5.5.1" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.1" - "@ethersproject/wordlists" "5.5.0" - -eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-promise@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" - integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== - dependencies: - "@types/glob" "^7.1.3" - -glob@^7.1.3, glob@^7.2.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== - dependencies: - type-fest "^0.20.2" - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -graceful-fs@^4.1.3: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -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= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.8, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -intl-messageformat@^9.3.15: - version "9.13.0" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.13.0.tgz#97360b73bd82212e4f6005c712a4a16053165468" - integrity sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw== - dependencies: - "@formatjs/ecma402-abstract" "1.11.4" - "@formatjs/fast-memoize" "1.2.1" - "@formatjs/icu-messageformat-parser" "2.1.0" - tslib "^2.1.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.8.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -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= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -joi@17.6.0, joi@^17.4.2: - version "17.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -kleur@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" - integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.partition@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.partition/-/lodash.partition-4.6.0.tgz#a38e46b73469e0420b0da1212e66d414be364ba4" - integrity sha1-o45GtzRp4EILDaEhLmbUFL42S6Q= - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -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= - -minimatch@^3.0.4, minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nanoid@^3.3.1: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-gyp-build@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.17: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-plugin-svelte@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz#ecfa4fe824238a4466a3497df1a96d15cf43cabb" - integrity sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA== - -prettier@^2.4.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" - integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.17.0, resolve@^1.19.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.5.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -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" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rollup-plugin-svelte@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz#d45f2b92b1014be4eb46b55aa033fb9a9c65f04d" - integrity sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg== - dependencies: - require-relative "^0.8.7" - rollup-pluginutils "^2.8.2" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^2.3.4: - version "2.73.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.73.0.tgz#128fef4b333fd92d02d6929afbb6ee38d7feb32d" - integrity sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ== - optionalDependencies: - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.5.2: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== - dependencies: - tslib "^2.1.0" - -sade@^1.7.4: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -sander@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" - integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= - dependencies: - es6-promise "^3.1.2" - graceful-fs "^4.1.3" - mkdirp "^0.5.1" - rimraf "^2.5.2" - -scrypt-js@3.0.1, scrypt-js@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^7.2.1, semver@^7.3.5: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -sorcery@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" - integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc= - dependencies: - buffer-crc32 "^0.2.5" - minimist "^1.2.0" - sander "^0.5.0" - sourcemap-codec "^1.3.0" - -sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -sturdy-websocket@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" - integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== - dependencies: - lodash.defaults "^4.2.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svelte-check@^2.2.6: - version "2.7.1" - resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-2.7.1.tgz#ecb89d11fcd67a46e750dba289fffb17e7597ddd" - integrity sha512-vHVu2+SQ6ibt77iTQaq2oiOjBgGL48qqcg0ZdEOsP5pPOjgeyR9QbnaEdzdBs9nsVYBc/42haKtzb2uFqS8GVw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.9" - chokidar "^3.4.1" - fast-glob "^3.2.7" - import-fresh "^3.2.1" - picocolors "^1.0.0" - sade "^1.7.4" - svelte-preprocess "^4.0.0" - typescript "*" - -svelte-i18n@^3.3.13: - version "3.4.0" - resolved "https://registry.yarnpkg.com/svelte-i18n/-/svelte-i18n-3.4.0.tgz#75838fba5bc680e39b421bb5c33fc3463aaa85f4" - integrity sha512-590N+YIRlebDT3fXmuAxd4guQZLR3vm4kCs5UhWYmw3SxOlJNZ7HwYYiw6d4jDr7P+Cx7DSopk1Z1K9wn8B6EA== - dependencies: - deepmerge "^4.2.2" - estree-walker "^2.0.1" - intl-messageformat "^9.3.15" - sade "^1.7.4" - tiny-glob "^0.2.6" - -svelte-preprocess@^4.0.0, svelte-preprocess@^4.9.4: - version "4.10.6" - resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.10.6.tgz#5f9a53e7ed3b85fc7e0841120c725b76ac5a1ba8" - integrity sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ== - dependencies: - "@types/pug" "^2.0.4" - "@types/sass" "^1.16.0" - detect-indent "^6.0.0" - magic-string "^0.25.7" - sorcery "^0.10.0" - strip-indent "^3.0.0" - -svelte@^3.46.4: - version "3.48.0" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.48.0.tgz#f98c866d45e155bad8e1e88f15f9c03cd28753d3" - integrity sha512-fN2YRm/bGumvjUpu6yI3BpvZnpIm9I6A7HR4oUNYd7ggYyIwSA/BX7DJ+UXXffLp6XNcUijyLvttbPVCYa/3xQ== - -table@^6.0.9: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -tiny-glob@^0.2.6: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0, tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript@*, typescript@^4.5.5: - version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" - integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/yarn.lock b/yarn.lock index 0ef42bb51..6467ce716 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2803,7 +2803,7 @@ bnb-javascript-sdk-nobroadcast@^2.16.14: "bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": version "4.2.0-0.2.0" - resolved "https://github.com/blocknative/sdk#eeea5977c87e33d4b01c5e1fc07635889fcb8327" + resolved "https://github.com/blocknative/sdk#05ed1038c4f486454b0f48721fc8ed3a80b62cfb" dependencies: crypto-es "^1.2.2" nanoid "^3.3.1" From 3f840854791142b862b9d0b3a5bf9714674fdc8c Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Tue, 7 Jun 2022 15:37:33 +1000 Subject: [PATCH 024/108] Latest SDK branch --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 6467ce716..34b78ef50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2803,7 +2803,7 @@ bnb-javascript-sdk-nobroadcast@^2.16.14: "bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": version "4.2.0-0.2.0" - resolved "https://github.com/blocknative/sdk#05ed1038c4f486454b0f48721fc8ed3a80b62cfb" + resolved "https://github.com/blocknative/sdk#22677dae76dd7ea9d79eacdd69c4fc0d9f01d7f9" dependencies: crypto-es "^1.2.2" nanoid "^3.3.1" From 2b6dc47b316dad636dce776b5f1f3bfc013662b2 Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 10:34:34 +1000 Subject: [PATCH 025/108] Add timeout to unsub calls --- packages/core/src/provider.ts | 6 ++++-- yarn.lock | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts index 98d1252d4..a99ac5112 100644 --- a/packages/core/src/provider.ts +++ b/packages/core/src/provider.ts @@ -197,11 +197,13 @@ export function trackWallet( .get() .wallets.find(wallet => wallet.label === label) - // Unsubscribe + // Unsubscribe with timeout of 60 seconds + // to allow for any currently inflight transactions wallet.accounts.forEach(({ address }) => { sdk.unsubscribe({ id: address, - chainId: wallet.chains[0].id + chainId: wallet.chains[0].id, + timeout: 60000 }) }) diff --git a/yarn.lock b/yarn.lock index 34b78ef50..e84d2c49f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2803,7 +2803,7 @@ bnb-javascript-sdk-nobroadcast@^2.16.14: "bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": version "4.2.0-0.2.0" - resolved "https://github.com/blocknative/sdk#22677dae76dd7ea9d79eacdd69c4fc0d9f01d7f9" + resolved "https://github.com/blocknative/sdk#8aed88f8f8c43d99e1d419b7c58be5d3fc376f41" dependencies: crypto-es "^1.2.2" nanoid "^3.3.1" From c8dca6c3b18c6d31a81a3ac65ca7db5577d1e80d Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 10:48:03 +1000 Subject: [PATCH 026/108] Add timeout to disconnect --- packages/core/src/disconnect.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/core/src/disconnect.ts b/packages/core/src/disconnect.ts index f43bee866..618cd3c54 100644 --- a/packages/core/src/disconnect.ts +++ b/packages/core/src/disconnect.ts @@ -21,7 +21,11 @@ async function disconnect(options: DisconnectOptions): Promise { const wallet = state.get().wallets.find(wallet => wallet.label === label) wallet.accounts.forEach(({ address }) => { - sdk.unsubscribe({ id: address, chainId: wallet.chains[0].id }) + sdk.unsubscribe({ + id: address, + chainId: wallet.chains[0].id, + timeout: 60000 + }) }) } } From 4889dff626c6586483aec62fa0fd2b9c74d251eb Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 10:54:15 +1000 Subject: [PATCH 027/108] Use NotifyEventStyles type --- packages/core/src/utils.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index f845982e3..caa0a54c6 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -27,7 +27,12 @@ import hourglass from './icons/hourglass' import checkmark from './icons/checkmark' import error from './icons/error' -import type { ChainStyle, ConnectedChain, DeviceNotBrowser } from './types' +import type { + ChainStyle, + ConnectedChain, + DeviceNotBrowser, + NotifyEventStyles +} from './types' export function getDevice(): Device | DeviceNotBrowser { if (typeof window !== 'undefined') { @@ -199,7 +204,7 @@ export function initializeWalletModules( }, [] as WalletModule[]) } -export const defaultNotifyEventStyles = { +export const defaultNotifyEventStyles: Record = { pending: { backgroundColor: 'var(--onboard-primary-700, var(--primary-700))', borderColor: '#6370E5', From 89c5118f8b7edc9b340126deaa12f35879b0833f Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 10:54:28 +1000 Subject: [PATCH 028/108] Update comments --- packages/core/src/provider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts index a99ac5112..5ef6ed2d3 100644 --- a/packages/core/src/provider.ts +++ b/packages/core/src/provider.ts @@ -95,7 +95,7 @@ export function trackWallet( disconnected$ }).pipe(share()) - // when account changed, set it to first account + // when account changed, set it to first account and subscribe to events accountsChanged$.subscribe(async ([address]) => { // no address, then no account connected, so disconnect wallet // this could happen if user locks wallet, @@ -140,7 +140,7 @@ export function trackWallet( } }) - // also when accounts change, update Balance and ENS, + // also when accounts change, update Balance and ENS accountsChanged$ .pipe( switchMap(async ([address]) => { From a4c78dd9f25a8cf7efd1bedf05e3fe195d93cb08 Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 10:57:05 +1000 Subject: [PATCH 029/108] Tidy up import statements --- packages/core/src/views/connect/Index.svelte | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/core/src/views/connect/Index.svelte b/packages/core/src/views/connect/Index.svelte index 241116ae8..e1acd9c2f 100644 --- a/packages/core/src/views/connect/Index.svelte +++ b/packages/core/src/views/connect/Index.svelte @@ -8,16 +8,8 @@ import { selectAccounts } from '../../provider' import { state } from '../../store' import { connectWallet$, onDestroy$ } from '../../streams' - import { - getChainId, - requestAccounts, - trackWallet, - getBalance, - getEns - } from '../../provider' import { addWallet, updateAccount } from '../../store/actions' import { validEnsChain } from '../../utils' - import CloseButton from '../shared/CloseButton.svelte' import Modal from '../shared/Modal.svelte' import Agreement from './Agreement.svelte' @@ -27,6 +19,15 @@ import SelectingWallet from './SelectingWallet.svelte' import Sidebar from './Sidebar.svelte' import { configuration } from '../../configuration' + import { getBlocknativeSdk } from '../../services' + + import { + getChainId, + requestAccounts, + trackWallet, + getBalance, + getEns + } from '../../provider' import type { ConnectOptions, @@ -34,7 +35,6 @@ WalletState, WalletWithLoadingIcon } from '../../types' - import { getBlocknativeSdk } from '../../services' export let autoSelect: ConnectOptions['autoSelect'] From 910c6e2ab744c89d9f3141b93e186a3fc272448d Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 7 Jun 2022 20:58:07 -0600 Subject: [PATCH 030/108] Update docs --- packages/core/README.md | 39 +++++++++++++++++++++++++++++++++++++++ packages/react/README.md | 26 ++++++++++++++++++++++++++ yarn.lock | 2 +- 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/packages/core/README.md b/packages/core/README.md index c54c22ae8..6b476f209 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -29,6 +29,8 @@ type InitOptions { appMetadata?: AppMetadata i18n?: i18nOptions accountCenter?: AccountCenterOptions + apiKey?: string + notify?: Partial } ``` @@ -114,6 +116,26 @@ type AccountCenterPosition = | 'topLeft' ``` +**`notify`** +An object that defines whether transaction notifications will display(defaults to true if an API key is provided) and a transactionHandler which is a callback that can disable or allow customizations of notifications. Currently notifications positions in the same location as the account center(either below - if the Account Center is positioned along the top, or above if positioned on the bottom of the view). + +```typescript +export type NotifyOptions = { + enabled: boolean // default: true + /** + * Callback that receives all transaction events + * Return a custom notification based on the event + * Or return false to disable notification for this event + * Or return undefined for a default notification + */ + transactionHandler: ( + event: EthereumTransactionData + ) => TransactionHandlerReturn +} + +export type TransactionHandlerReturn = CustomNotification | boolean | void +``` + ### Initialization Example Putting it all together, here is an example initialization with the injected wallet modules: @@ -174,6 +196,13 @@ const onboard = Onboard({ { name: 'Coinbase', url: 'https://wallet.coinbase.com/' } ] }, + apiKey: 'xxx387fb-bxx1-4xxc-a0x3-9d37e426xxxx' + notify: { + enabled: true, + transactionHandler: transaction => { + console.log({ transaction }) + } + }, accountCenter: { desktop: { position: 'topRight', @@ -192,6 +221,16 @@ const onboard = Onboard({ selectingWallet: { header: 'custom text header' } + }, + notify: { + transaction: { + txStuck: 'custom text for this notification event' + } + } + }, + es: { + transaction: { + txRequest: 'Su transacción está esperando que confirme' } } } diff --git a/packages/react/README.md b/packages/react/README.md index 170f2f2cc..11b9edefe 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -100,6 +100,13 @@ const web3Onboard = init({ { name: 'Coinbase', url: 'https://wallet.coinbase.com/' } ] }, + apiKey: 'xxx387fb-bxx1-4xxc-a0x3-9d37e426xxxx' + notify: { + enabled: true, + transactionHandler: transaction => { + console.log({ transaction }) + } + }, accountCenter: { desktop: { position: 'topRight', @@ -111,6 +118,25 @@ const web3Onboard = init({ enabled: true, minimal: true } + }, + i18n: { + en: { + connect: { + selectingWallet: { + header: 'custom text header' + } + }, + notify: { + transaction: { + txStuck: 'custom text for this notification event' + } + } + }, + es: { + transaction: { + txRequest: 'Su transacción está esperando que confirme' + } + } } }) diff --git a/yarn.lock b/yarn.lock index ec1307801..1d06acbb6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2079,7 +2079,7 @@ dependencies: "@walletconnect/window-getters" "^1.0.0" -"@web3-onboard/core@^2.2.10-alpha.1", "@web3-onboard/core@^2.2.9": +"@web3-onboard/core@^2.2.10", "@web3-onboard/core@^2.2.9": version "2.2.10" resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.2.10.tgz#61dcc912062548db38d67e228637a27c59122080" integrity sha512-sQF14OkT+4ibefXPQ7ueZW7DcKbbCzQXZW64FZ+ETEpgKCYjVarqpcMlp5YB4jv49cWWqM8qXRoskaqz01PktQ== From b9db596d94df2b0087f5effed715dea4ed47d367 Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 13:18:13 +1000 Subject: [PATCH 031/108] Update versions --- package.json | 2 +- packages/demo/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1559c6f17..90e86ab97 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "web3-onboard-monorepo", "private": true, "workspaces": [ - "./packages/*" + "packages/*" ], "scripts": { "install-m1-mac": "yarn install --ignore-optional", diff --git a/packages/demo/package.json b/packages/demo/package.json index f322bc8a2..ad793c603 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -22,15 +22,15 @@ "webpack-dev-server": "4.7.4" }, "dependencies": { - "@web3-onboard/core": "^2.2.10", "@web3-onboard/coinbase": "^2.0.3", + "@web3-onboard/core": "^2.2.10", "@web3-onboard/fortmatic": "^2.0.2", "@web3-onboard/gnosis": "^2.0.1", "@web3-onboard/injected-wallets": "^2.0.7", "@web3-onboard/keepkey": "^2.1.0", "@web3-onboard/keystone": "^2.1.0", "@web3-onboard/ledger": "^2.1.0", - "@web3-onboard/magic": "^2.0.1", + "@web3-onboard/magic": "^2.0.3", "@web3-onboard/portis": "^2.0.0", "@web3-onboard/torus": "^2.0.1", "@web3-onboard/trezor": "^2.1.0", From ecaed63de239e3ba05a18805c2be714c7da7ced7 Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 13:18:31 +1000 Subject: [PATCH 032/108] Componentise notification --- packages/core/src/views/notify/Index.svelte | 124 +----------------- .../core/src/views/notify/Notification.svelte | 118 +++++++++++++++++ 2 files changed, 122 insertions(+), 120 deletions(-) create mode 100644 packages/core/src/views/notify/Notification.svelte diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index cff170688..7311bba1b 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -1,55 +1,13 @@ {#if $notifications$.length} @@ -141,41 +58,8 @@ };`} > {#each $notifications$ as notification (notification.key)} -
        • notification.onclick && notification.onclick(e)} - class="bn-notify-custom bn-notify-notification {`bn-notify-notification-${notification.type}`} - {configuration.appMetadata.name - ? `bn-notify-${configuration.appMetadata.name}` - : ''}" - in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} - out:fly={{ duration: 400, x, y, easing: quintIn }} - > - {#if notification.link} - - - - - {:else} - - - {/if} - -
          removeNotification(notification.id)} - class="notify-close-btn {configuration.appMetadata.name - ? `bn-notify-${configuration.appMetadata.name}` - : ''}" - > - -
          +
        • +
        • {/each}
        diff --git a/packages/core/src/views/notify/Notification.svelte b/packages/core/src/views/notify/Notification.svelte new file mode 100644 index 000000000..7a678bb38 --- /dev/null +++ b/packages/core/src/views/notify/Notification.svelte @@ -0,0 +1,118 @@ + + + + +
        notification.onclick && notification.onclick(e)} + class="bn-notify-notification bn-notify-notification-{notification.type}}" + in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} + out:fly={{ duration: 400, x, y, easing: quintIn }} +> + {#if notification.link} + + + + + {:else} + + + {/if} + +
        removeNotification(notification.id)} + class="notify-close-btn" + > + +
        +
        From 95f53abdd5531f464e65cd32fb9f5357f7f1303f Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 13:18:46 +1000 Subject: [PATCH 033/108] Add margin to modal --- packages/core/src/views/shared/Modal.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/src/views/shared/Modal.svelte b/packages/core/src/views/shared/Modal.svelte index f24883ac1..9362d11c8 100644 --- a/packages/core/src/views/shared/Modal.svelte +++ b/packages/core/src/views/shared/Modal.svelte @@ -103,6 +103,7 @@ .modal { width: 100%; + margin: 0 16px; } } From 462dc213aa02fdd454c23fbd22a2fda81a7d0c4d Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 13:37:04 +1000 Subject: [PATCH 034/108] Remove network from customize notification --- packages/core/src/types.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index fdc42e567..22bf25d92 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -185,9 +185,11 @@ export type Notification = { export type TransactionHandlerReturn = CustomNotification | boolean | void -export type CustomNotification = Partial> +export type CustomNotification = Partial< + Omit +> -export type NotificationType = 'pending' | 'success' | 'error' | 'hint' +export type NotificationType = 'pending' | 'success' //| 'error' | 'hint' // ==== ACTIONS ==== // export type Action = From 783548c2596e270935db1c0139e4b5ec87d91e02 Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 13:56:25 +1000 Subject: [PATCH 035/108] Add hitnt and error types back --- packages/core/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 22bf25d92..89b1f9052 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -189,7 +189,7 @@ export type CustomNotification = Partial< Omit > -export type NotificationType = 'pending' | 'success' //| 'error' | 'hint' +export type NotificationType = 'pending' | 'success' | 'error' | 'hint' // ==== ACTIONS ==== // export type Action = From 1cbc68065473eb05b365b3a69c85572b07f7aebe Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 13:56:40 +1000 Subject: [PATCH 036/108] Throw if invalid custom notification --- packages/core/src/notify.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/core/src/notify.ts b/packages/core/src/notify.ts index 7477ec7e0..8c32154e1 100644 --- a/packages/core/src/notify.ts +++ b/packages/core/src/notify.ts @@ -21,8 +21,7 @@ export function handleTransactionUpdates( const invalid = validateTransactionHandlerReturn(customized) if (invalid) { - console.error(invalid) - return + throw invalid } const notification = transactionEventToNotification(transaction, customized) From b129040ed38b28fa01234f482a78eb6d60e4f68f Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 14:15:07 +1000 Subject: [PATCH 037/108] Upgrade sdk and handle unsupported network error --- packages/core/src/provider.ts | 29 ++++++++++++-------- packages/core/src/views/connect/Index.svelte | 14 ++++++---- yarn.lock | 2 +- 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts index 5ef6ed2d3..c2d6c09b3 100644 --- a/packages/core/src/provider.ts +++ b/packages/core/src/provider.ts @@ -130,12 +130,15 @@ export function trackWallet( const wallet = state .get() .wallets.find(wallet => wallet.label === label) - - sdk.subscribe({ - id: address, - chainId: wallet.chains[0].id, - type: 'account' - }) + try { + sdk.subscribe({ + id: address, + chainId: wallet.chains[0].id, + type: 'account' + }) + } catch (error) { + // unsupported network for transaction events + } } } }) @@ -209,11 +212,15 @@ export function trackWallet( // resubscribe for new chainId wallet.accounts.forEach(({ address }) => { - sdk.subscribe({ - id: address, - chainId: chainId, - type: 'account' - }) + try { + sdk.subscribe({ + id: address, + chainId: chainId, + type: 'account' + }) + } catch (error) { + // unsupported network for transaction events + } }) } } diff --git a/packages/core/src/views/connect/Index.svelte b/packages/core/src/views/connect/Index.svelte index e1acd9c2f..764b259dd 100644 --- a/packages/core/src/views/connect/Index.svelte +++ b/packages/core/src/views/connect/Index.svelte @@ -182,11 +182,15 @@ const sdk = await getBlocknativeSdk() if (sdk) { - sdk.subscribe({ - id: address, - chainId: chain, - type: 'account' - }) + try { + sdk.subscribe({ + id: address, + chainId: chain, + type: 'account' + }) + } catch (error) { + // unsupported network for transaction events + } } } diff --git a/yarn.lock b/yarn.lock index 1d06acbb6..d3bd23d8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2841,7 +2841,7 @@ bnb-javascript-sdk-nobroadcast@^2.16.14: "bnc-sdk@https://github.com/blocknative/sdk#feature/multichain-sdk": version "4.2.0-0.2.0" - resolved "https://github.com/blocknative/sdk#8aed88f8f8c43d99e1d419b7c58be5d3fc376f41" + resolved "https://github.com/blocknative/sdk#30104b9f3fade856b3ffd6ac2d566b77c418da91" dependencies: crypto-es "^1.2.2" nanoid "^3.3.1" From 4a21452c6e5060d059f5d7150cddcdc4c096eb9f Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Wed, 8 Jun 2022 14:27:47 +1000 Subject: [PATCH 038/108] Auto dismiss notification --- .../core/src/views/notify/Notification.svelte | 17 ++++++++++++++++- yarn.lock | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/core/src/views/notify/Notification.svelte b/packages/core/src/views/notify/Notification.svelte index 7a678bb38..08b86679f 100644 --- a/packages/core/src/views/notify/Notification.svelte +++ b/packages/core/src/views/notify/Notification.svelte @@ -14,6 +14,7 @@ networkToChainId } from '../../utils' import { configuration } from '../../configuration' + import { onDestroy, onMount } from 'svelte' export let notification: Notification export let position: string @@ -41,6 +42,20 @@ x = position.includes('left') ? -321 : 321 y = 0 + + let timeoutId: NodeJS.Timeout + + onMount(() => { + if (notification.autoDismiss) { + timeoutId = setTimeout(() => { + removeNotification(notification.id) + }, notification.autoDismiss) + } + }) + + onDestroy(() => { + clearTimeout(timeoutId) + }) @@ -273,23 +273,32 @@ {/if} -
        - {#if $notify$.enabled && $accountCenter$.position.includes('bottom')} - - {/if} - - {#if $accountCenter$.enabled && $wallets$.length} - - {/if} - - {#if $notify$.enabled && $accountCenter$.position.includes('top')} - - {/if} -
        +{#if ($notify$.enabled || $accountCenter$.enabled) && $wallets$.length} +
        + {#if $notify$.enabled && $accountCenter$.position.includes('bottom')} + + {/if} +
        + {#if $accountCenter$.enabled && $wallets$.length} + + {/if} +
        + + {#if $notify$.enabled && $accountCenter$.position.includes('top')} + + {/if} +
        +{/if} diff --git a/packages/core/src/views/account-center/Micro.svelte b/packages/core/src/views/account-center/Micro.svelte index 8404fd59d..887c77462 100644 --- a/packages/core/src/views/account-center/Micro.svelte +++ b/packages/core/src/views/account-center/Micro.svelte @@ -20,6 +20,7 @@ background-color: var(--onboard-white, var(--white)); border: 1px solid var(--onboard-gray-100, var(--gray-100)); box-shadow: var(--onboard-shadow-3, var(--shadow-3)); + width: 80px; } .radius { diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 7311bba1b..d523cea1b 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -17,22 +17,20 @@ flex-flow: column nowrap; font-size: 16px; list-style-type: none; - width: 100%; + width: 316px; max-height: 100vh; overflow-y: scroll; - overflow-x: hidden; color: #4a4a4a; background: transparent; scrollbar-width: none; box-sizing: border-box; - height: 100vh; pointer-events: none; z-index: 300; font-family: var( --notify-onboard-font-family-normal, var(--onboard-font-family-normal, var(--font-family-normal)) ); - margin: 8px 0; + margin: 0 0; } @media only screen and (max-width: 450px) { @@ -58,7 +56,10 @@ };`} > {#each $notifications$ as notification (notification.key)} -
      • +
      • {/each} diff --git a/packages/core/src/views/notify/Notification.svelte b/packages/core/src/views/notify/Notification.svelte index 08b86679f..49ddb62f9 100644 --- a/packages/core/src/views/notify/Notification.svelte +++ b/packages/core/src/views/notify/Notification.svelte @@ -75,7 +75,6 @@ --notify-onboard-border-radius, var(--onboard-border-radius-4, var(--border-radius-4)) ); - margin-top: 8px; display: flex; } diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index 701e768c5..9d66500ed 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -158,7 +158,7 @@ // // example customizing account center accountCenter: { desktop: { - position: 'topRight', + position: 'bottomLeft', enabled: true, minimal: false } @@ -177,15 +177,23 @@ enabled: true, transactionHandler: transaction => { console.log({ transaction }) - if (transaction.eventCode === 'txPool') { - return { - type: 'error', - message: 'what dis foo?', - id: '123', - key: '321', - network: 'bsc-main' - } - } + // if (transaction.eventCode === 'txPool') { + // return { + // type: 'error', + // message: 'what dis foo?', + // id: '123', + // key: '321', + // network: 'bsc-main' + // } + // } if (transaction.eventCode === 'txConfirmed') { + // return { + // type: 'error', + // message: 'PArty and a reallly realllllly realllllllly long message, PArty and a reallly realllllly realllllllly long message', + // id: '123234', + // key: '321432', + // network: 'bsc-main' + // } + // } } }, apiKey: '25b387fb-bf21-42ec-a093-9d37e4267a7a' From 65d672da5ef33f9c17cbb81fd0bec89c27374e6c Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Wed, 8 Jun 2022 16:03:04 -0600 Subject: [PATCH 041/108] cleanup and more positioning --- packages/core/src/notifyDefaults.ts | 0 packages/core/src/views/notify/Index.svelte | 10 ++++---- .../core/src/views/notify/Notification.svelte | 5 +--- .../views/notify/NotificationContent.svelte | 14 ++++------- packages/core/src/views/notify/Timer.svelte | 24 ++++--------------- packages/demo/src/App.svelte | 4 ++-- 6 files changed, 18 insertions(+), 39 deletions(-) delete mode 100644 packages/core/src/notifyDefaults.ts diff --git a/packages/core/src/notifyDefaults.ts b/packages/core/src/notifyDefaults.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index d523cea1b..020aad37e 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -32,7 +32,7 @@ ); margin: 0 0; } - + @media only screen and (max-width: 450px) { ul { width: 100%; @@ -56,10 +56,10 @@ };`} > {#each $notifications$ as notification (notification.key)} -
      • +
      • {/each} diff --git a/packages/core/src/views/notify/Notification.svelte b/packages/core/src/views/notify/Notification.svelte index 49ddb62f9..674aa7c5e 100644 --- a/packages/core/src/views/notify/Notification.svelte +++ b/packages/core/src/views/notify/Notification.svelte @@ -4,12 +4,10 @@ import { removeNotification } from '../../store/actions' import { fly } from 'svelte/transition' import { quintIn } from 'svelte/easing' - import type { NotifyOptions, Notification } from '../../types' + import type { Notification } from '../../types' import CloseButton from '../shared/CloseButton.svelte' import { - shortenAddress, - shortenEns, chainStyles, networkToChainId } from '../../utils' @@ -29,7 +27,6 @@ ) } - // Animation Code from V1 $: if (configuration.device.type === 'mobile') { x = 0 diff --git a/packages/core/src/views/notify/NotificationContent.svelte b/packages/core/src/views/notify/NotificationContent.svelte index 518263c38..1cf71ae67 100644 --- a/packages/core/src/views/notify/NotificationContent.svelte +++ b/packages/core/src/views/notify/NotificationContent.svelte @@ -1,8 +1,7 @@ -
        - {#if notification.type === 'pending' && notification.startTime} +
        + {#if startTime} - - - {timeString(currentTime - notification.startTime)} + + {timeString(currentTime - startTime)} ago {/if} diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index 9d66500ed..4fe9bc128 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -160,7 +160,7 @@ desktop: { position: 'bottomLeft', enabled: true, - minimal: false + minimal: true } }, // example customizing copy @@ -168,7 +168,7 @@ en: { notify: { watched: { - "txConfirmed": "you paid a sucka {formattedValue} {asset}!" + // "txConfirmed": "you paid a sucka {formattedValue} {asset}!" } } } From eecba0d5296614993f05bf6a59f757faab662904 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Wed, 8 Jun 2022 16:57:23 -0600 Subject: [PATCH 042/108] Animations working --- packages/core/src/notify.ts | 2 +- packages/core/src/views/notify/Index.svelte | 35 ++++++++++++++++--- .../core/src/views/notify/Notification.svelte | 30 ++-------------- packages/core/src/views/notify/Timer.svelte | 2 +- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/packages/core/src/notify.ts b/packages/core/src/notify.ts index 8c32154e1..b340adcdd 100644 --- a/packages/core/src/notify.ts +++ b/packages/core/src/notify.ts @@ -108,7 +108,7 @@ export function transactionEventToNotification( type, key, network, - startTime, + startTime : startTime || Date.now(), eventCode, message, autoDismiss: typeToDismissTimeout( diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 020aad37e..d98a37b71 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -1,12 +1,38 @@ @@ -17,9 +43,8 @@ flex-flow: column nowrap; font-size: 16px; list-style-type: none; - width: 316px; max-height: 100vh; - overflow-y: scroll; + overflow: visible; color: #4a4a4a; background: transparent; scrollbar-width: none; @@ -56,11 +81,13 @@ };`} > {#each $notifications$ as notification (notification.key)} -
      • - +
      • {/each}
      diff --git a/packages/core/src/views/notify/Notification.svelte b/packages/core/src/views/notify/Notification.svelte index 674aa7c5e..04ad073f8 100644 --- a/packages/core/src/views/notify/Notification.svelte +++ b/packages/core/src/views/notify/Notification.svelte @@ -2,8 +2,7 @@ import StatusIconBadge from './StatusIconBadge.svelte' import NotificationContent from './NotificationContent.svelte' import { removeNotification } from '../../store/actions' - import { fly } from 'svelte/transition' - import { quintIn } from 'svelte/easing' + import type { Notification } from '../../types' import CloseButton from '../shared/CloseButton.svelte' @@ -11,34 +10,10 @@ chainStyles, networkToChainId } from '../../utils' - import { configuration } from '../../configuration' import { onDestroy, onMount } from 'svelte' export let notification: Notification - export let position: string - - let x: number - let y: number - function elasticOut(t: number): number { - return ( - Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -35.0 * t) + - 1.0 - ) - } - - $: if (configuration.device.type === 'mobile') { - x = 0 - - if (position.includes('top')) { - y = -50 - } else { - y = 50 - } - } - - x = position.includes('left') ? -321 : 321 - y = 0 let timeoutId: NodeJS.Timeout @@ -101,8 +76,7 @@ class:bn-notify-clickable={notification.onclick} on:click={e => notification.onclick && notification.onclick(e)} class="bn-notify-notification bn-notify-notification-{notification.type}}" - in:fly={{ duration: 1200, delay: 300, x, y, easing: elasticOut }} - out:fly={{ duration: 400, x, y, easing: quintIn }} + > {#if notification.link} diff --git a/packages/core/src/views/notify/Timer.svelte b/packages/core/src/views/notify/Timer.svelte index 064441e8e..f2c52677a 100644 --- a/packages/core/src/views/notify/Timer.svelte +++ b/packages/core/src/views/notify/Timer.svelte @@ -2,7 +2,7 @@ import { _ as formatter, locale } from 'svelte-i18n' import { onDestroy } from 'svelte' - export let startTime: number = Date.now() + export let startTime: number function timeString(time: number): string { const seconds = Math.floor(time / 1000) From de3e49dc9d888b0032afac7bfb647d8330e079fb Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Wed, 8 Jun 2022 17:07:22 -0600 Subject: [PATCH 043/108] Fix animation speed, linking in transaction hash --- packages/core/src/views/notify/Index.svelte | 4 ++-- .../core/src/views/notify/Notification.svelte | 20 +++++-------------- .../views/notify/NotificationContent.svelte | 12 ++++++++--- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index d98a37b71..33620ccbc 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -57,7 +57,7 @@ ); margin: 0 0; } - + @media only screen and (max-width: 450px) { ul { width: 100%; @@ -82,7 +82,7 @@ > {#each $notifications$ as notification (notification.key)}
    • - {#if notification.link} - - - - - {:else} - - - {/if} + +
      removeNotification(notification.id)} diff --git a/packages/core/src/views/notify/NotificationContent.svelte b/packages/core/src/views/notify/NotificationContent.svelte index 1cf71ae67..48c20db9a 100644 --- a/packages/core/src/views/notify/NotificationContent.svelte +++ b/packages/core/src/views/notify/NotificationContent.svelte @@ -59,9 +59,15 @@ - - {shortenAddress(notification.id)} - + {#if notification.link} + + {shortenAddress(notification.id)} + + {:else} +
      + {shortenAddress(notification.id)} +
      + {/if}
      From 9fb4fcab74a5ca75f244bac775f7561767f35e46 Mon Sep 17 00:00:00 2001 From: Aaron Barnard Date: Thu, 9 Jun 2022 10:05:16 +1000 Subject: [PATCH 044/108] Fix padding on AC --- packages/core/src/views/account-center/Maximized.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/views/account-center/Maximized.svelte b/packages/core/src/views/account-center/Maximized.svelte index 11505aded..7f0a1b115 100644 --- a/packages/core/src/views/account-center/Maximized.svelte +++ b/packages/core/src/views/account-center/Maximized.svelte @@ -54,6 +54,7 @@ border-radius: var(--onboard-border-radius-3, var(--border-radius-3)); width: 100%; filter: drop-shadow(0px 4px 16px rgba(178, 178, 178, 0.2)); + padding: 0 1px 1px 1px; } .wallets-section { @@ -116,7 +117,6 @@ } .network-container { - margin: 0 1px 1px 1px; border-radius: 15px; color: var(--onboard-gray-500, var(--gray-500)); } From 5e1fccb2f34147b1fe1fc0cf06885e4960a40f38 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Wed, 8 Jun 2022 20:35:20 -0600 Subject: [PATCH 045/108] Add text color to non-linking transaction hash --- .../core/src/views/notify/NotificationContent.svelte | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/core/src/views/notify/NotificationContent.svelte b/packages/core/src/views/notify/NotificationContent.svelte index 48c20db9a..cd470cff9 100644 --- a/packages/core/src/views/notify/NotificationContent.svelte +++ b/packages/core/src/views/notify/NotificationContent.svelte @@ -32,6 +32,13 @@ } .address-hash { + color: var( + --notify-onboard-primary-200, + var(--onboard-primary-200, var(--primary-200)) + ); + } + + a.address-hash { color: var( --notify-onboard-primary-400, var(--onboard-primary-400, var(--primary-400)) @@ -64,7 +71,7 @@ {shortenAddress(notification.id)} {:else} -
      +
      {shortenAddress(notification.id)}
      {/if} From 1c2c57905d302ea662daba240c3e2c0c5622542f Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Thu, 9 Jun 2022 14:48:18 -0600 Subject: [PATCH 046/108] More variablization and updating docs --- packages/core/README.md | 16 ++++++++++------ packages/core/src/notify.ts | 2 +- packages/core/src/views/notify/Index.svelte | 9 +++++---- .../core/src/views/notify/Notification.svelte | 6 ++++-- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/core/README.md b/packages/core/README.md index ccab13737..43d4b2009 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -117,15 +117,17 @@ type AccountCenterPosition = ``` **`notify`** -An object that defines whether transaction notifications will display(defaults to true if an API key is provided) and a transactionHandler which is a callback that can disable or allow customizations of notifications. Currently notifications positions in the same location as the account center(either below - if the Account Center is positioned along the top, or above if positioned on the bottom of the view). +An object that defines whether transaction notifications will display (defaults to true if an API key is provided). This object contains an `enabled` flag prop and an optional `transactionHandler` which is a callback that can disable or allow customizations of notifications. +Currently notifications positions in the same location as the account center(either below - if the Account Center is positioned along the top, or above if positioned on the bottom of the view). The transactionHandler can react off any property of the Ethereum TransactionData returned to the callback from the event(see console.log in example init) and in turn can return a Custom Notification object to define the verbiage, styling or add functionality: - `Notification.message` - to completely customize the message shown - - `Notification.eventCode` see the notify props in the [default en file here](src/i18n/en.json) - of the notification and how it will be styled: - - `Notification.type` - icon type () + - `Notification.eventCode` - Handle codes in your own way - see codes here under the notify prop [default en file here](src/i18n/en.json) + - `Notification.type` - icon type displayed (see NotificationType below for options) - `Notification.autoDismiss` - time on screen - `Notification.link` - add link to hash - - `Notification.onClick()` - click event for notification + - `Notification.onClick()` - notification body click event + + Notify can also be completely styled by using the CSS variables found below. These are setup to allow for maximum customization with base styling variables setting to global the global more themed styling (i.e. `--onboard-grey-600`) as well as a more precise component level styling available (`--notify-onboard-grey-600`) with the latter taking precedent if defined ```typescript export type NotifyOptions = { @@ -136,7 +138,7 @@ export type NotifyOptions = { * Or return false to disable notification for this event * Or return undefined for a default notification */ - transactionHandler: ( + transactionHandler?: ( event: EthereumTransactionData ) => TransactionHandlerReturn } @@ -682,6 +684,7 @@ The Onboard styles can customized via [CSS variables](https://developer.mozilla. /* notify STYLES */ --notify-onboard-font-family-normal + --notify-onboard-font-size-5 --notify-onboard-gray-300 --notify-onboard-gray-600 --notify-onboard-border-radius @@ -690,6 +693,7 @@ The Onboard styles can customized via [CSS variables](https://developer.mozilla. --notify-onboard-line-height-4 --notify-onboard-primary-100 --notify-onboard-primary-400 + --notify-onboard-main-padding } ``` diff --git a/packages/core/src/notify.ts b/packages/core/src/notify.ts index b340adcdd..17cabe820 100644 --- a/packages/core/src/notify.ts +++ b/packages/core/src/notify.ts @@ -156,7 +156,7 @@ export function typeToDismissTimeout(type: string): number { switch (type) { case 'success': case 'hint': - return 4000 + return 0 default: return 0 } diff --git a/packages/core/src/views/notify/Index.svelte b/packages/core/src/views/notify/Index.svelte index 322657ff7..02f092f97 100644 --- a/packages/core/src/views/notify/Index.svelte +++ b/packages/core/src/views/notify/Index.svelte @@ -41,12 +41,13 @@ padding-left: 0; display: flex; flex-flow: column nowrap; - font-size: 16px; + font-size: var( + --notify-onboard-font-size-5, + var(--onboard-font-size-5, var(--font-size-5)) + ); list-style-type: none; - max-height: 100vh; + max-height: calc(100vh - 64px); overflow: visible; - color: #4a4a4a; - background: transparent; scrollbar-width: none; box-sizing: border-box; pointer-events: none; diff --git a/packages/core/src/views/notify/Notification.svelte b/packages/core/src/views/notify/Notification.svelte index 3b5c8a47f..9975e7fa8 100644 --- a/packages/core/src/views/notify/Notification.svelte +++ b/packages/core/src/views/notify/Notification.svelte @@ -42,7 +42,10 @@ --notify-onboard-gray-600, var(--onboard-gray-600, var(--gray-600)) ); - padding: 12px; + padding: var( + --notify-onboard-main-padding, + var(--onboard-spacing-4, var(--spacing-4)) + ); border-radius: var( --notify-onboard-border-radius, var(--onboard-border-radius-4, var(--border-radius-4)) @@ -76,7 +79,6 @@ class:bn-notify-clickable={notification.onclick} on:click={e => notification.onclick && notification.onclick(e)} class="bn-notify-notification bn-notify-notification-{notification.type}}" - > Date: Thu, 9 Jun 2022 14:51:01 -0600 Subject: [PATCH 047/108] Add demo with updates for testing in the future --- packages/demo/src/App.svelte | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index 38bcd83f0..0229127db 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -158,9 +158,9 @@ // // example customizing account center accountCenter: { desktop: { - position: 'bottomLeft', + position: 'topRight', enabled: true, - minimal: true + minimal: false } }, // example customizing copy @@ -168,7 +168,7 @@ en: { notify: { watched: { - // "txConfirmed": "you paid a sucka {formattedValue} {asset}!" + // "txConfirmed": "you paid a foo {formattedValue} {asset}!" } } } @@ -180,23 +180,14 @@ // if (transaction.eventCode === 'txPool') { // return { // type: 'error', - // message: 'what dis foo?', + // message: 'Your in the pool, hope you brought a towel!', // id: '123', // key: '321', - // network: 'bsc-main' - // } - // } if (transaction.eventCode === 'txConfirmed') { - // return { - // type: 'error', - // message: 'PArty and a reallly realllllly realllllllly long message, PArty and a reallly realllllly realllllllly long message', - // id: '123234', - // key: '321432', - // network: 'bsc-main' // } // } } }, - apiKey: '25b387fb-bf21-42ec-a093-9d37e4267a7a' + apiKey: 'xxxx87fb-bf21-42ec-a093-9d37e4267xxx' }) // Subscribe to wallet updates @@ -261,13 +252,14 @@ align-items: center; } - /* CUSTOMIZE CSS VARIABLES */ - :root { - /* --onboard-gray-100: pink; */ + .account-info div { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } .text-input { - width: 24rem; + width: 18rem; } .sign-transaction { @@ -312,6 +304,7 @@ {#each accounts as { address, ens, balance }}