diff --git a/apps/landing/package.json b/apps/landing/package.json index b324af8..cb038e7 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -7,12 +7,12 @@ "scripts": { "prod:build": "rm -rf dist && sass ./styles/index.scss ./dist/index.css && pnpm run autoprefix && pnpm run pack", "prod:build:apps": "pnpm run prod:build", - "prod:deploy": "dfx deploy msq_landing --no-asset-upgrade --network=ic", + "prod:deploy": "dfx deploy msq_landing --network=ic", "prod:deploy:frontend": "pnpm run prod:deploy", "prod:deploy:landing": "pnpm run prod:deploy", "dev:build": "pnpm run prod:build", "dev:build:apps": "pnpm run prod:build", - "dev:deploy": "dfx deploy msq_landing --no-asset-upgrade", + "dev:deploy": "dfx deploy msq_landing", "dev:deploy:frontend": "pnpm run dev:deploy", "dev:deploy:landing": "pnpm run dev:deploy", "watch": "sass --watch ./styles/index.scss ./dist/index.css", diff --git a/apps/site/package.json b/apps/site/package.json index 6e625fe..2e051e1 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -9,7 +9,7 @@ "prod:build": "pnpm run propagateEnv && tsc && vite build", "prod:build:apps": "pnpm run prod:build", "prod:deploy": "dfx deploy --network=ic", - "prod:deploy:frontend": "dfx deploy msq_frontend --no-asset-upgrade --network=ic", + "prod:deploy:frontend": "dfx deploy msq_frontend --network=ic", "prod:deploy:site": "pnpm run prod:deploy:frontend", "prod:deploy:backend": "dfx deploy msq_statistics --network=ic", "dev:build": "pnpm run propagateEnv && tsc && vite build --mode dev", @@ -17,7 +17,7 @@ "dev": "pnpm run propagateEnv && vite --mode dev", "dev:gen": "dfx generate", "dev:deploy": "dfx deploy", - "dev:deploy:frontend": "dfx deploy msq_frontend --no-asset-upgrade", + "dev:deploy:frontend": "dfx deploy msq_frontend", "dev:deploy:site": "pnpm run dev:deploy:frontend", "dev:deploy:backend": "dfx deploy msq_statistics", "propagateEnv": "node ../../propagate-env.js", diff --git a/apps/site/src/frontend/backend.ts b/apps/site/src/frontend/backend.ts index ccb9844..15c6474 100644 --- a/apps/site/src/frontend/backend.ts +++ b/apps/site/src/frontend/backend.ts @@ -7,7 +7,6 @@ import type { _SERVICE as StatisticsBackend } from "../declarations/msq_statisti import { Principal } from "@dfinity/principal"; import { ICP_INDEX_TOKEN_IDX, bytesToHex } from "@fort-major/msq-shared"; import { AccountIdentifier } from "@dfinity/ledger-icp"; -import { DEFAULT_SUBACCOUNT } from "./utils"; export const canisterId = import.meta.env.VITE_CANISTER_ID_MSQ_STATISTICS; diff --git a/apps/site/src/frontend/components/account-card/style.ts b/apps/site/src/frontend/components/account-card/style.ts index 67e01f2..72ce6fa 100644 --- a/apps/site/src/frontend/components/account-card/style.ts +++ b/apps/site/src/frontend/components/account-card/style.ts @@ -1,6 +1,5 @@ import { css, styled } from "solid-styled-components"; import { - BlinkAnimation, COLOR_CHARTREUSE, COLOR_BLACK, COLOR_GRAY_115, diff --git a/apps/site/src/frontend/components/add-account-btn/index.tsx b/apps/site/src/frontend/components/add-account-btn/index.tsx index 8bacdaf..95a9692 100644 --- a/apps/site/src/frontend/components/add-account-btn/index.tsx +++ b/apps/site/src/frontend/components/add-account-btn/index.tsx @@ -2,7 +2,7 @@ import { styled } from "solid-styled-components"; import { ANIM_DURATION, COLOR_GRAY_105, COLOR_GRAY_115, COLOR_GRAY_130, COLOR_WHITE } from "../../ui-kit"; import { eventHandler, getClassName } from "../../utils"; import { EIconKind, Icon } from "../../ui-kit/icon"; -import { Size16, Text, WeightSemiBold } from "../../ui-kit/typography"; +import { Text } from "../../ui-kit/typography"; interface IAddAccountBtnProps { disabled?: boolean | undefined; diff --git a/apps/site/src/frontend/components/add-new-mask-btn/index.tsx b/apps/site/src/frontend/components/add-new-mask-btn/index.tsx index d86bc7b..2a745a1 100644 --- a/apps/site/src/frontend/components/add-new-mask-btn/index.tsx +++ b/apps/site/src/frontend/components/add-new-mask-btn/index.tsx @@ -1,7 +1,7 @@ import { AddNewMaskBtnIconWrapper, AddNewMaskBtnText, AddNewMaskBtnWrapper } from "./style"; import { eventHandler } from "../../utils"; import { EIconKind, Icon } from "../../ui-kit/icon"; -import { Text, WeightSemiBold } from "../../ui-kit/typography"; +import { Text } from "../../ui-kit/typography"; export interface IAddNewMaskBtnProps { onClick: () => void; diff --git a/apps/site/src/frontend/components/add-new-mask-btn/style.ts b/apps/site/src/frontend/components/add-new-mask-btn/style.ts index 9eb37d0..87c49fe 100644 --- a/apps/site/src/frontend/components/add-new-mask-btn/style.ts +++ b/apps/site/src/frontend/components/add-new-mask-btn/style.ts @@ -1,5 +1,5 @@ import { css, styled } from "solid-styled-components"; -import { ANIM_DURATION, COLOR_BLACK, COLOR_GRAY_105, COLOR_GRAY_115, COLOR_WHITE } from "../../ui-kit"; +import { ANIM_DURATION, COLOR_GRAY_105, COLOR_GRAY_115, COLOR_WHITE } from "../../ui-kit"; export const AddNewMaskBtnWrapper = styled.div` display: flex; diff --git a/apps/site/src/frontend/components/cabinet-nav/index.tsx b/apps/site/src/frontend/components/cabinet-nav/index.tsx index 2902c1a..e65b4d5 100644 --- a/apps/site/src/frontend/components/cabinet-nav/index.tsx +++ b/apps/site/src/frontend/components/cabinet-nav/index.tsx @@ -2,7 +2,7 @@ import { useLocation, useNavigate } from "@solidjs/router"; import { CabinetNavItem, CabinetNavItemDot, CabinetNavWrapper } from "./styles"; import { For, Match, Switch } from "solid-js"; import { eventHandler } from "../../utils"; -import { Size16, Text, WeightSemiBold } from "../../ui-kit/typography"; +import { Text } from "../../ui-kit/typography"; interface IItemProps { title: string; diff --git a/apps/site/src/frontend/components/cabinet-nav/styles.ts b/apps/site/src/frontend/components/cabinet-nav/styles.ts index b528586..1ef9f65 100644 --- a/apps/site/src/frontend/components/cabinet-nav/styles.ts +++ b/apps/site/src/frontend/components/cabinet-nav/styles.ts @@ -1,12 +1,5 @@ import { styled } from "solid-styled-components"; -import { - ANIM_DURATION, - BAR_HEIGHT, - COLOR_CHARTREUSE, - COLOR_GRAY_105, - COLOR_GRAY_115, - HEADER_HEIGHT, -} from "../../ui-kit"; +import { ANIM_DURATION, COLOR_CHARTREUSE, COLOR_GRAY_105, COLOR_GRAY_115 } from "../../ui-kit"; export const CabinetNavWrapper = styled.nav` display: flex; diff --git a/apps/site/src/frontend/components/header/index.tsx b/apps/site/src/frontend/components/header/index.tsx index 836014b..5f4e045 100644 --- a/apps/site/src/frontend/components/header/index.tsx +++ b/apps/site/src/frontend/components/header/index.tsx @@ -5,7 +5,7 @@ import { EIconKind, Icon } from "../../ui-kit/icon"; import { Show } from "solid-js"; import { useLocation, useNavigate } from "@solidjs/router"; import { eventHandler } from "../../utils"; -import { Size18, Text, WeightSemiBold } from "../../ui-kit/typography"; +import { Text } from "../../ui-kit/typography"; const HeaderDiv = styled.header` position: fixed; diff --git a/apps/site/src/frontend/components/login-option/index.tsx b/apps/site/src/frontend/components/login-option/index.tsx index fb1d1be..79860b6 100644 --- a/apps/site/src/frontend/components/login-option/index.tsx +++ b/apps/site/src/frontend/components/login-option/index.tsx @@ -5,7 +5,7 @@ import { Show, createSignal } from "solid-js"; import { eventHandler } from "../../utils"; import { Input } from "../../ui-kit/input"; import { EIconKind, Icon } from "../../ui-kit/icon"; -import { ColorGray140, Size12, Size16, Text, WeightSemiBold } from "../../ui-kit/typography"; +import { Text } from "../../ui-kit/typography"; import { COLOR_GRAY_140 } from "../../ui-kit"; export interface ILoginOptionProps { diff --git a/apps/site/src/frontend/components/login-option/style.ts b/apps/site/src/frontend/components/login-option/style.ts index bd1e875..dd314ed 100644 --- a/apps/site/src/frontend/components/login-option/style.ts +++ b/apps/site/src/frontend/components/login-option/style.ts @@ -1,5 +1,5 @@ import { css, styled } from "solid-styled-components"; -import { ANIM_DURATION, COLOR_BLACK, COLOR_GRAY_105, COLOR_GRAY_115, COLOR_GRAY_140, COLOR_WHITE } from "../../ui-kit"; +import { ANIM_DURATION, COLOR_BLACK, COLOR_GRAY_105, COLOR_GRAY_140, COLOR_WHITE } from "../../ui-kit"; export const LoginOptionWrapper = styled.div<{ editable?: boolean | undefined }>` display: flex; diff --git a/apps/site/src/frontend/components/modal/index.tsx b/apps/site/src/frontend/components/modal/index.tsx index 6f964d5..f968df0 100644 --- a/apps/site/src/frontend/components/modal/index.tsx +++ b/apps/site/src/frontend/components/modal/index.tsx @@ -1,7 +1,7 @@ import { JSXElement, children, onCleanup, onMount } from "solid-js"; import { Portal } from "solid-js/web"; import { styled } from "solid-styled-components"; -import { disableScroll, enableScroll, eventHandler } from "../../utils"; +import { disableScroll, enableScroll } from "../../utils"; export function Modal(props: { children: JSXElement }) { const c = children(() => props.children); diff --git a/apps/site/src/frontend/components/notification-bar/index.tsx b/apps/site/src/frontend/components/notification-bar/index.tsx index e9a6a98..40386bb 100644 --- a/apps/site/src/frontend/components/notification-bar/index.tsx +++ b/apps/site/src/frontend/components/notification-bar/index.tsx @@ -1,4 +1,4 @@ -import { Size16, Text, WeightMedium } from "../../ui-kit/typography"; +import { Text } from "../../ui-kit/typography"; import { NotificationBarWrapper } from "./style"; export function NotificationBar() { diff --git a/apps/site/src/frontend/components/notification-bar/style.ts b/apps/site/src/frontend/components/notification-bar/style.ts index ad197e0..2376e2a 100644 --- a/apps/site/src/frontend/components/notification-bar/style.ts +++ b/apps/site/src/frontend/components/notification-bar/style.ts @@ -1,5 +1,5 @@ import { styled } from "solid-styled-components"; -import { BAR_HEIGHT, COLOR_DARK_BLUE, COLOR_WHITE } from "../../ui-kit"; +import { BAR_HEIGHT, COLOR_DARK_BLUE } from "../../ui-kit"; export const NotificationBarWrapper = styled.noindex` position: fixed; diff --git a/apps/site/src/frontend/components/spoiler/index.tsx b/apps/site/src/frontend/components/spoiler/index.tsx index 119b67f..f6fb986 100644 --- a/apps/site/src/frontend/components/spoiler/index.tsx +++ b/apps/site/src/frontend/components/spoiler/index.tsx @@ -1,6 +1,7 @@ import { JSXElement, Match, Switch, children, createEffect, createSignal } from "solid-js"; import { SpoilerChildren, SpoilerHeader, SpoilerWrapper } from "./style"; import { EIconKind, Icon } from "../../ui-kit/icon"; + export interface ISpoilerProps { defaultOpen?: boolean | undefined; header: JSXElement; diff --git a/apps/site/src/frontend/components/spoiler/style.ts b/apps/site/src/frontend/components/spoiler/style.ts index 46450f2..15f7ac8 100644 --- a/apps/site/src/frontend/components/spoiler/style.ts +++ b/apps/site/src/frontend/components/spoiler/style.ts @@ -1,4 +1,4 @@ -import { css, styled } from "solid-styled-components"; +import { styled } from "solid-styled-components"; import { COLOR_GRAY_140 } from "../../ui-kit"; export const SpoilerWrapper = styled.div` diff --git a/apps/site/src/frontend/components/txn-history-modal/index.tsx b/apps/site/src/frontend/components/txn-history-modal/index.tsx index 0c1df4b..7caddc9 100644 --- a/apps/site/src/frontend/components/txn-history-modal/index.tsx +++ b/apps/site/src/frontend/components/txn-history-modal/index.tsx @@ -9,13 +9,12 @@ import { } from "./style"; import { Text } from "../../ui-kit/typography"; import { COLOR_GRAY_140, COLOR_GRAY_190, COLOR_WHITE, FONT_WEIGHT_MEDIUM, FONT_WEIGHT_REGULAR } from "../../ui-kit"; -import { For, Match, Show, Switch, createSignal, onMount } from "solid-js"; +import { For, Match, Switch, createSignal, onMount } from "solid-js"; import { TxnHistoryEntry } from "../txn-history-entry"; import { Button, EButtonKind } from "../../ui-kit/button"; import { eventHandler } from "../../utils"; import { Modal } from "../modal"; import { EIconKind, Icon } from "../../ui-kit/icon"; -import { useNavigate } from "@solidjs/router"; export interface ITxnHistoryModalProps { tokenId: string; diff --git a/apps/site/src/frontend/index.tsx b/apps/site/src/frontend/index.tsx index a2ca523..a00acdf 100644 --- a/apps/site/src/frontend/index.tsx +++ b/apps/site/src/frontend/index.tsx @@ -25,6 +25,7 @@ import { AssetsStore } from "./store/assets"; import { OriginDataStore } from "./store/origins"; import { Error404Page, + ErrorAssetNotFoundPage, ErrorEnableMsqPage, ErrorInstallMetaMaskPage, ErrorMSQConnectionRejectedPage, @@ -70,6 +71,7 @@ export function App() { + diff --git a/apps/site/src/frontend/pages/cabinet/my-assets/receive/index.tsx b/apps/site/src/frontend/pages/cabinet/my-assets/receive/index.tsx index e9c3bbd..fa559d7 100644 --- a/apps/site/src/frontend/pages/cabinet/my-assets/receive/index.tsx +++ b/apps/site/src/frontend/pages/cabinet/my-assets/receive/index.tsx @@ -1,14 +1,12 @@ import { css, styled } from "solid-styled-components"; import { ANIM_DURATION, - BAR_HEIGHT, COLOR_ACCENT, COLOR_BLACK, COLOR_GRAY_108, COLOR_GRAY_140, COLOR_GRAY_150, COLOR_WHITE, - HEADER_HEIGHT, } from "../../../../ui-kit"; import { EIconKind, Icon } from "../../../../ui-kit/icon"; import { H5, Text } from "../../../../ui-kit/typography"; diff --git a/apps/site/src/frontend/pages/cabinet/my-assets/send/style.ts b/apps/site/src/frontend/pages/cabinet/my-assets/send/style.ts index 87e5eab..6922b1b 100644 --- a/apps/site/src/frontend/pages/cabinet/my-assets/send/style.ts +++ b/apps/site/src/frontend/pages/cabinet/my-assets/send/style.ts @@ -1,12 +1,5 @@ import { css, styled } from "solid-styled-components"; -import { - BAR_HEIGHT, - COLOR_BLACK, - COLOR_GRAY_140, - COLOR_GRAY_190, - COLOR_WHITE, - HEADER_HEIGHT, -} from "../../../../ui-kit"; +import { COLOR_BLACK, COLOR_GRAY_140, COLOR_GRAY_190, COLOR_WHITE } from "../../../../ui-kit"; export const SendPageMixin = css` display: flex !important; diff --git a/apps/site/src/frontend/pages/cabinet/my-assets/style.ts b/apps/site/src/frontend/pages/cabinet/my-assets/style.ts index 7b09c51..6e8b7cf 100644 --- a/apps/site/src/frontend/pages/cabinet/my-assets/style.ts +++ b/apps/site/src/frontend/pages/cabinet/my-assets/style.ts @@ -1,7 +1,6 @@ import { css, styled } from "solid-styled-components"; import { ANIM_DURATION, - COLOR_CHARTREUSE, COLOR_ERROR_RED, COLOR_GRAY_115, COLOR_GRAY_130, diff --git a/apps/site/src/frontend/pages/error/index.tsx b/apps/site/src/frontend/pages/error/index.tsx index 76380d3..d1e0c60 100644 --- a/apps/site/src/frontend/pages/error/index.tsx +++ b/apps/site/src/frontend/pages/error/index.tsx @@ -2,11 +2,11 @@ import { css, styled } from "solid-styled-components"; import { EIconKind } from "../../ui-kit/icon"; import { H2, Text } from "../../ui-kit/typography"; import { Button, EButtonKind } from "../../ui-kit/button"; -import { Show, createEffect, onMount } from "solid-js"; +import { Show, createEffect } from "solid-js"; import { useNavigate } from "@solidjs/router"; import { ErrorSpoiler } from "../../components/error-spoiler"; import { COLOR_GRAY_105, COLOR_GRAY_140, COLOR_GRAY_190 } from "../../ui-kit"; -import { DISCORD_LINK, METAMASK_LINK, delay } from "@fort-major/msq-shared"; +import { DISCORD_LINK, METAMASK_LINK } from "@fort-major/msq-shared"; import isMobile from "ismobilejs"; import { useMsqClient } from "../../store/global"; @@ -41,6 +41,22 @@ export function ErrorMobileNotSupportedPage() { ); } +export function ErrorAssetNotFoundPage() { + const navigate = useNavigate(); + + return ( + navigate('/'), + }} + /> + ); +} + export function ErrorMSQConnectionRejectedPage() { const navigate = useNavigate(); const msq = useMsqClient(); diff --git a/apps/site/src/frontend/pages/index/index.tsx b/apps/site/src/frontend/pages/index/index.tsx index ac42069..6e7ba31 100644 --- a/apps/site/src/frontend/pages/index/index.tsx +++ b/apps/site/src/frontend/pages/index/index.tsx @@ -2,7 +2,6 @@ import { Outlet, useLocation, useNavigate } from "@solidjs/router"; import { ErrorPage } from "../error"; import { EIconKind } from "../../ui-kit/icon"; import { DISCORD_LINK, debugStringify, logError } from "@fort-major/msq-shared"; -import isMobile from "ismobilejs"; import { createEffect } from "solid-js"; export function IndexPage() { diff --git a/apps/site/src/frontend/pages/integration/login/style.ts b/apps/site/src/frontend/pages/integration/login/style.ts index 68f3646..216b68c 100644 --- a/apps/site/src/frontend/pages/integration/login/style.ts +++ b/apps/site/src/frontend/pages/integration/login/style.ts @@ -1,5 +1,5 @@ import { styled } from "solid-styled-components"; -import { ANIM_DURATION, COLOR_GRAY_130, COLOR_GRAY_140, COLOR_WHITE } from "../../../ui-kit"; +import { ANIM_DURATION, COLOR_GRAY_130, COLOR_WHITE } from "../../../ui-kit"; export const LoginHeadingSection = styled.section` position: fixed; diff --git a/apps/site/src/frontend/pages/integration/payment/checkout/style.ts b/apps/site/src/frontend/pages/integration/payment/checkout/style.ts index d938725..fa62f29 100644 --- a/apps/site/src/frontend/pages/integration/payment/checkout/style.ts +++ b/apps/site/src/frontend/pages/integration/payment/checkout/style.ts @@ -1,5 +1,5 @@ import { css, styled } from "solid-styled-components"; -import { COLOR_ACCENT, COLOR_BLUE, COLOR_GRAY_110, COLOR_GRAY_130 } from "../../../../ui-kit"; +import { COLOR_ACCENT, COLOR_GRAY_110, COLOR_GRAY_130 } from "../../../../ui-kit"; export const CheckoutPageWrapper = styled.div` position: relative; diff --git a/apps/site/src/frontend/pages/statistics/index.tsx b/apps/site/src/frontend/pages/statistics/index.tsx index 13634aa..f972e8e 100644 --- a/apps/site/src/frontend/pages/statistics/index.tsx +++ b/apps/site/src/frontend/pages/statistics/index.tsx @@ -5,7 +5,6 @@ import { Line } from "solid-chartjs"; import { COLOR_ACCENT } from "../../ui-kit"; import { Stat, StatsWrapper } from "./style"; import { Text } from "../../ui-kit/typography"; -import { log } from "@fort-major/msq-shared"; interface IStat { labels: string[]; diff --git a/apps/site/src/frontend/pages/txn/success.tsx b/apps/site/src/frontend/pages/txn/success.tsx index b71b58d..5882603 100644 --- a/apps/site/src/frontend/pages/txn/success.tsx +++ b/apps/site/src/frontend/pages/txn/success.tsx @@ -1,5 +1,5 @@ import { styled } from "solid-styled-components"; -import { H3, Size16, Size20, Text, WeightSemiBold } from "../../ui-kit/typography"; +import { H3, Text } from "../../ui-kit/typography"; import { AccountCard } from "../../components/account-card"; import { Button, EButtonKind } from "../../ui-kit/button"; import { onMount } from "solid-js"; diff --git a/apps/site/src/frontend/store/assets.tsx b/apps/site/src/frontend/store/assets.tsx index be82fb4..22c7999 100644 --- a/apps/site/src/frontend/store/assets.tsx +++ b/apps/site/src/frontend/store/assets.tsx @@ -1,6 +1,6 @@ import { createStore, produce } from "solid-js/store"; import { useMsqClient } from "./global"; -import { Accessor, Setter, createContext, createEffect, createSignal, onCleanup, onMount, useContext } from "solid-js"; +import { Accessor, Setter, createContext, createSignal, onCleanup, onMount, useContext } from "solid-js"; import { DEFAULT_PRINCIPAL, IAssetMetadata, @@ -19,6 +19,7 @@ import { AnonymousIdentity } from "@dfinity/agent"; import { ISendPageProps } from "../pages/cabinet/my-assets/send"; import { IPaymentCheckoutPageProps } from "../pages/integration/payment/checkout"; import { ITxnHistoryPageProps } from "../pages/cabinet/my-assets/txn-history"; +import { useNavigate } from "@solidjs/router"; export type IAssetDataExt = { accounts: { @@ -114,6 +115,7 @@ export function AssetsStore(props: IChildren) { const [refreshPeriodically, setRefreshPeriodically] = createSignal(true); const [initialized, setInitialized] = createSignal(false); const _msq = useMsqClient(); + const navigate = useNavigate(); onMount(async () => { while (refreshPeriodically()) { @@ -130,25 +132,42 @@ export function AssetsStore(props: IChildren) { const init = async () => { if (initialized()) return; + await addPredefinedAssets(); + await fetch(); await refresh(); setInitialized(true); }; - const fetch = async (assetIds?: string[]): Promise => { + const addPredefinedAssets = async () => { const msq = _msq()!; - let fetchedAllAssetData = await msq.getAllAssetData(assetIds); + let fetchedAllAssetData = await msq.getAllAssetData(); - // CREATE PRE-DEFINED ASSETS const assetsToCreate = []; + for (let asset of PRE_DEFINED_ASSETS) { if (fetchedAllAssetData[asset.assetId]) continue; assetsToCreate.push(asset); } + if (assetsToCreate.length > 0) { await msq.addAsset({ assets: assetsToCreate }); - fetchedAllAssetData = await msq.getAllAssetData(assetIds); + } + }; + + const fetch = async (assetIds?: string[]): Promise => { + const msq = _msq()!; + + let fetchedAllAssetData = await msq.getAllAssetData(assetIds); + + // trap, if it is proposed for payment, but not listed in user's wallet + if (assetIds) { + for (let assetId of assetIds) { + if (fetchedAllAssetData[assetId]) continue; + + navigate("/token-not-found"); + } } const allAssetDataKeys = Object.keys(fetchedAllAssetData); diff --git a/apps/site/src/frontend/ui-kit/icon.tsx b/apps/site/src/frontend/ui-kit/icon.tsx index d34fd08..92426c3 100644 --- a/apps/site/src/frontend/ui-kit/icon.tsx +++ b/apps/site/src/frontend/ui-kit/icon.tsx @@ -1,5 +1,5 @@ import { Match, Switch } from "solid-js"; -import { COLOR_BLACK, COLOR_WHITE } from "."; +import { COLOR_WHITE } from "."; import { IChildren, eventHandler } from "../utils"; import { keyframes, styled } from "solid-styled-components"; diff --git a/apps/site/src/frontend/utils/index.ts b/apps/site/src/frontend/utils/index.ts index 6c5f4e2..9c41d67 100644 --- a/apps/site/src/frontend/utils/index.ts +++ b/apps/site/src/frontend/utils/index.ts @@ -5,7 +5,6 @@ import { ErrorCode, IStatistics, PRE_LISTED_TOKENS, - Principal, TAccountId, debugStringify, err, @@ -97,7 +96,7 @@ export async function makeAgent(identity?: Identity | undefined, host?: string): icHost = storedHost === null ? import.meta.env.VITE_MSQ_DFX_NETWORK_HOST : storedHost; } - const agent = new HttpAgent({ host: icHost, identity }); + const agent = new HttpAgent({ host: icHost, identity, retryTimes: 10 }); if (icHost) { await agent.fetchRootKey(); diff --git a/package.json b/package.json index 76f2c02..2f5cd22 100644 --- a/package.json +++ b/package.json @@ -30,10 +30,10 @@ "cargo:repair": "turbo cargo:repair" }, "dependencies": { - "@dfinity/agent": "^1.1", - "@dfinity/candid": "^1.1", - "@dfinity/identity": "^1.1", - "@dfinity/principal": "^1.1", + "@dfinity/agent": "^1.2", + "@dfinity/candid": "^1.2", + "@dfinity/identity": "^1.2", + "@dfinity/principal": "^1.2", "zod": "3.22.4" }, "devDependencies": { diff --git a/packages/client/package.json b/packages/client/package.json index df1514f..6e29db7 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -5,7 +5,7 @@ "It is done in src/index.ts:1", "Just set SNAP_VERSION to the actual one" ], - "version": "0.2.11", + "version": "0.3.3", "main": "./dist/cjs/index", "module": "./dist/esm/index", "unpkg": "./dist/esm/index", diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 92cc0b3..35f7eeb 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -1,4 +1,4 @@ -import { IGetSnapsResponse, IMetaMaskEthereumProvider, ISnapRequest } from "./types"; +import { IGetSnapsResponse, ISnapRequest } from "./types"; import { type IIdentityLinkRequest, type IIdentityUnlinkRequest, diff --git a/packages/client/src/identity.ts b/packages/client/src/identity.ts index bf34616..610187c 100644 --- a/packages/client/src/identity.ts +++ b/packages/client/src/identity.ts @@ -18,7 +18,6 @@ import { makeAvatarSvg, Principal, IHttpAgentRequest, - debugStringify, } from "@fort-major/msq-shared"; import { SECP256K1_OID, wrapDER } from "./der"; diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 0408e76..8fd08af 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -1,4 +1,4 @@ -export const SNAP_VERSION: string = "^0.2.10"; +export const SNAP_VERSION: string = "^0.3.3"; export { MsqClient, diff --git a/packages/client/src/internal.ts b/packages/client/src/internal.ts index 1dacd38..f7c531e 100644 --- a/packages/client/src/internal.ts +++ b/packages/client/src/internal.ts @@ -3,7 +3,6 @@ import { type IIdentityGetLoginOptionsRequest, type IIdentityGetLoginOptionsResponse, type IIdentityLoginRequest, - type IShowICRC1TransferConfirmRequest, type IStatistics, SNAP_METHODS, type TIdentityId, diff --git a/packages/shared/package.json b/packages/shared/package.json index c6755e0..fdb74de 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@fort-major/msq-shared", - "version": "0.2.11", + "version": "0.3.3", "main": "./dist/cjs/index", "module": "./dist/esm/index", "unpkg": "./dist/esm/index", diff --git a/packages/snap/package.json b/packages/snap/package.json index 735ad21..889898e 100644 --- a/packages/snap/package.json +++ b/packages/snap/package.json @@ -1,6 +1,6 @@ { "name": "@fort-major/msq", - "version": "0.2.10", + "version": "0.3.3", "description": "Privacy-focused MetaMask snap for the Internet Computer (ICP)", "keywords": [ "MetaMask", @@ -53,7 +53,7 @@ "ts-jest": "29.1.1" }, "dependencies": { - "@dfinity/identity-secp256k1": "^1.1", + "@dfinity/identity-secp256k1": "^1.2", "@fort-major/msq-shared": "workspace:*", "@metamask/snaps-sdk": "^3.2" } diff --git a/packages/snap/snap.manifest.json b/packages/snap/snap.manifest.json index 955e535..d35a16f 100644 --- a/packages/snap/snap.manifest.json +++ b/packages/snap/snap.manifest.json @@ -1,5 +1,5 @@ { - "version": "0.2.10", + "version": "0.3.3", "description": "Privacy-focused MetaMask snap for the Internet Computer (ICP)", "proposedName": "MSQ - Safe ICP Wallet", "repository": { @@ -7,7 +7,7 @@ "url": "https://github.com/fort-major/msq.git" }, "source": { - "shasum": "7jGZZgytkjdOaVs5Z1q3AjkWZN74bQZ4CXCT0jhftWs=", + "shasum": "HP2Qt6zRVhY51DWfMu+he84jn3ni7+OQ7/vHqy79JA4=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/snap/src/protocols/statistics.ts b/packages/snap/src/protocols/statistics.ts index ea92dd5..aa5b505 100644 --- a/packages/snap/src/protocols/statistics.ts +++ b/packages/snap/src/protocols/statistics.ts @@ -1,11 +1,4 @@ -import { - IStatisticsData, - type IStatistics, - ZStatisticsData, - zodParse, - fromCBOR, - ZStatisticsIncrementRequest, -} from "@fort-major/msq-shared"; +import { type IStatistics, zodParse, fromCBOR, ZStatisticsIncrementRequest } from "@fort-major/msq-shared"; import { StateManager } from "../state"; /** diff --git a/packages/snap/src/state.ts b/packages/snap/src/state.ts index 3846471..56ed20c 100644 --- a/packages/snap/src/state.ts +++ b/packages/snap/src/state.ts @@ -467,14 +467,10 @@ async function retrieveStateWrapped(): Promise { }, }); - if (state == null) { - const s = makeDefaultState(); - STATE = s; + STATE = state == null ? makeDefaultState() : zodParse(ZState, fromCBOR(state.data as string)); - STATE_UPDATE_TIMESTAMP = Date.now(); - } else { - STATE = zodParse(ZState, fromCBOR(state.data as string)); - } + LAST_STATE_PERSIST_TIMESTAMP = Date.now(); + STATE_UPDATE_TIMESTAMP = LAST_STATE_PERSIST_TIMESTAMP; } return createDeepOnChangeProxy(STATE, () => { @@ -535,8 +531,6 @@ async function persistStateLocal(): Promise { zodParse(ZState, STATE); - LAST_STATE_PERSIST_TIMESTAMP = Date.now(); - await snap.request({ method: "snap_manageState", params: { @@ -544,4 +538,6 @@ async function persistStateLocal(): Promise { newState: { data: toCBOR(STATE) }, }, }); + + LAST_STATE_PERSIST_TIMESTAMP = Date.now(); } diff --git a/packages/snap/test/protected.test.ts b/packages/snap/test/protected.test.ts index ee4c473..c0cff77 100644 --- a/packages/snap/test/protected.test.ts +++ b/packages/snap/test/protected.test.ts @@ -4,7 +4,6 @@ import { IIdentityAddRequest, IIdentityGetLoginOptionsRequest, IIdentityLoginRequest, - IShowICRC1TransferConfirmRequest, SNAP_METHODS, toCBOR, } from "@fort-major/msq-shared"; diff --git a/packages/snap/test/sign.test.ts b/packages/snap/test/sign.test.ts index 3464b71..8b6ce44 100644 --- a/packages/snap/test/sign.test.ts +++ b/packages/snap/test/sign.test.ts @@ -8,7 +8,6 @@ import { IIdentitySignRequest, SNAP_METHODS, bytesToHex, - delay, fromCBOR, toCBOR, } from "@fort-major/msq-shared"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a5a5da..b9389e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,17 +9,17 @@ importers: .: dependencies: '@dfinity/agent': - specifier: ^1.1 - version: 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) + specifier: ^1.2 + version: 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) '@dfinity/candid': - specifier: ^1.1 - version: 1.1.1(@dfinity/principal@1.1.1) + specifier: ^1.2 + version: 1.2.0(@dfinity/principal@1.2.0) '@dfinity/identity': - specifier: ^1.1 - version: 1.1.1(@dfinity/agent@1.1.1)(@dfinity/principal@1.1.1)(@peculiar/webcrypto@1.4.5) + specifier: ^1.2 + version: 1.2.0(@dfinity/agent@1.2.0)(@dfinity/principal@1.2.0)(@peculiar/webcrypto@1.4.5) '@dfinity/principal': - specifier: ^1.1 - version: 1.1.1 + specifier: ^1.2 + version: 1.2.0 zod: specifier: 3.22.4 version: 3.22.4 @@ -120,10 +120,10 @@ importers: dependencies: '@dfinity/ledger-icp': specifier: ^2.2 - version: 2.2.1(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/nns-proto@1.0.1)(@dfinity/principal@1.1.1)(@dfinity/utils@2.1.2) + version: 2.2.2(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/nns-proto@1.0.2)(@dfinity/principal@1.2.0)(@dfinity/utils@2.1.3) '@dfinity/ledger-icrc': specifier: ^2.2 - version: 2.2.0(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1)(@dfinity/utils@2.1.2) + version: 2.2.1(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0)(@dfinity/utils@2.1.3) '@fort-major/msq-client': specifier: workspace:* version: link:../../packages/client @@ -218,8 +218,8 @@ importers: packages/snap: dependencies: '@dfinity/identity-secp256k1': - specifier: ^1.1 - version: 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) + specifier: ^1.2 + version: 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) '@fort-major/msq-shared': specifier: workspace:* version: link:../shared @@ -1644,14 +1644,14 @@ packages: requiresBuild: true optional: true - /@dfinity/agent@1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1): - resolution: {integrity: sha512-FR7Vd+WMKetuwVhan5qevzk7QnsR44IfooaRjB/PohO+DztIg77uNsYKieloqeBqsqkxYkSJc8hYoAQm64YHNw==} + /@dfinity/agent@1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0): + resolution: {integrity: sha512-i9mH0PO73nrhLc9lZv14SWr4muyMcs6uqqlG2SHQtRUFRXbqj4DOhKsU0Sm+kC8eWYCSu65WPKPYwwAR7YM6ug==} peerDependencies: - '@dfinity/candid': ^1.1.1 - '@dfinity/principal': ^1.1.1 + '@dfinity/candid': ^1.2.0 + '@dfinity/principal': ^1.2.0 dependencies: - '@dfinity/candid': 1.1.1(@dfinity/principal@1.1.1) - '@dfinity/principal': 1.1.1 + '@dfinity/candid': 1.2.0(@dfinity/principal@1.2.0) + '@dfinity/principal': 1.2.0 '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 base64-arraybuffer: 0.2.0 @@ -1660,18 +1660,18 @@ packages: simple-cbor: 0.4.1 dev: false - /@dfinity/candid@1.1.1(@dfinity/principal@1.1.1): - resolution: {integrity: sha512-CQlM5zWkzdlZ5tO4zQL6Ch0Wj9zROJpQ6Lcof8d3OE42FMIQwpLQeDKQ3i/CtxDuIHYia8dFI0rxM1E96WBpKQ==} + /@dfinity/candid@1.2.0(@dfinity/principal@1.2.0): + resolution: {integrity: sha512-L6gV3ODIFC9qNenq3zuRvHrTwH36IM5utVH2wMS5f5eIUeG9fNe+avYLRPBUJwdeX7cM7xhvDgE/m/aN2cZvKQ==} peerDependencies: - '@dfinity/principal': ^1.1.1 + '@dfinity/principal': ^1.2.0 dependencies: - '@dfinity/principal': 1.1.1 + '@dfinity/principal': 1.2.0 dev: false - /@dfinity/identity-secp256k1@1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1): - resolution: {integrity: sha512-b2CjWI/3qqtCBjhLS5lmtQmxKCMDBAktyPKBHckBoKrPv2iuzZ7oWA0C7SmN8xXvzfcAoT+Ue1RRK1Z069IpDg==} + /@dfinity/identity-secp256k1@1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0): + resolution: {integrity: sha512-QAsVycTLY0HH5OS/Ub8G0A70WZb9nkJR9fzZywUIAKpFRY8ZXHiXrT/ifM6AqY9L/83l/ywrwuSKbHVngshpkw==} dependencies: - '@dfinity/agent': 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) + '@dfinity/agent': 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 asn1js: 3.0.5 @@ -1683,73 +1683,73 @@ packages: - '@dfinity/principal' dev: false - /@dfinity/identity@1.1.1(@dfinity/agent@1.1.1)(@dfinity/principal@1.1.1)(@peculiar/webcrypto@1.4.5): - resolution: {integrity: sha512-GGMk9uYquyeZ4c1sPgsm+Iw3GVl0Qm6czVRTBaztZGk3Pmw8/+6byDSQiLqFApBwQCxit7uVozMR0fXC2IuENQ==} + /@dfinity/identity@1.2.0(@dfinity/agent@1.2.0)(@dfinity/principal@1.2.0)(@peculiar/webcrypto@1.4.5): + resolution: {integrity: sha512-XKFRor195wrXw7yYPh33czh3GJt5shZRRettOcwFYikxAXmOvIlCjATGVGRv2icGBq4AV8SOBJA0lqhnfaUguQ==} peerDependencies: - '@dfinity/agent': ^1.1.1 - '@dfinity/principal': ^1.1.1 + '@dfinity/agent': ^1.2.0 + '@dfinity/principal': ^1.2.0 '@peculiar/webcrypto': ^1.4.0 dependencies: - '@dfinity/agent': 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) - '@dfinity/principal': 1.1.1 + '@dfinity/agent': 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) + '@dfinity/principal': 1.2.0 '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 '@peculiar/webcrypto': 1.4.5 borc: 2.1.2 dev: false - /@dfinity/ledger-icp@2.2.1(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/nns-proto@1.0.1)(@dfinity/principal@1.1.1)(@dfinity/utils@2.1.2): - resolution: {integrity: sha512-0+muT7oPhrvSHQevX3XAMbyfwghYzFlEjLeiNQSsH/3Y1lBuY0GVn0UufR/5iBHkuDkCMmWGGLdHLyr55Qn44g==} + /@dfinity/ledger-icp@2.2.2(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/nns-proto@1.0.2)(@dfinity/principal@1.2.0)(@dfinity/utils@2.1.3): + resolution: {integrity: sha512-QnXKirEACNJXs9UFUdDQX2okN6KyVxGjuUjrWg52bRrg6hGEcbVkfqATkrdka+1wR8JQpwdwUVDP7P3W9ZDyXA==} peerDependencies: '@dfinity/agent': ^1.0.1 '@dfinity/candid': ^1.0.1 - '@dfinity/nns-proto': ^1.0.1 + '@dfinity/nns-proto': ^1.0.2 '@dfinity/principal': ^1.0.1 - '@dfinity/utils': ^2.1.2 + '@dfinity/utils': ^2.1.3 dependencies: - '@dfinity/agent': 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) - '@dfinity/candid': 1.1.1(@dfinity/principal@1.1.1) - '@dfinity/nns-proto': 1.0.1 - '@dfinity/principal': 1.1.1 - '@dfinity/utils': 2.1.2(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) + '@dfinity/agent': 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) + '@dfinity/candid': 1.2.0(@dfinity/principal@1.2.0) + '@dfinity/nns-proto': 1.0.2 + '@dfinity/principal': 1.2.0 + '@dfinity/utils': 2.1.3(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) dev: false - /@dfinity/ledger-icrc@2.2.0(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1)(@dfinity/utils@2.1.2): - resolution: {integrity: sha512-Le17WLCotBsREWzB29Vm6ApYsmYfe7qQl6GmS0WW6vIMfL+ddBffLfDkzbCraM0ok4PVI/3jxt3TRwBNirvxTQ==} + /@dfinity/ledger-icrc@2.2.1(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0)(@dfinity/utils@2.1.3): + resolution: {integrity: sha512-Mt5PrPGZ5+YsvRXjjx0GH4O+3SuLY0lPpliVWvJGymy24VTGmFjsdDhJnubZXyDZMKZ8+ALpwarYcbctxFXM1g==} peerDependencies: '@dfinity/agent': ^1.0.1 '@dfinity/candid': ^1.0.1 '@dfinity/principal': ^1.0.1 - '@dfinity/utils': ^2.1.2 + '@dfinity/utils': ^2.1.3 dependencies: - '@dfinity/agent': 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) - '@dfinity/candid': 1.1.1(@dfinity/principal@1.1.1) - '@dfinity/principal': 1.1.1 - '@dfinity/utils': 2.1.2(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) + '@dfinity/agent': 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) + '@dfinity/candid': 1.2.0(@dfinity/principal@1.2.0) + '@dfinity/principal': 1.2.0 + '@dfinity/utils': 2.1.3(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) dev: false - /@dfinity/nns-proto@1.0.1: - resolution: {integrity: sha512-zMtlERvmE3X9vlx13rMPghWJNiTAzEU8R6CA5EScnK3EnDFUMdFhBPeW06/BmqG3ngVqES+AM58u9v/SB4ECDQ==} + /@dfinity/nns-proto@1.0.2: + resolution: {integrity: sha512-GszvkrGOFCFhMNGCjBLBOJJ7tqNIynqgB7ZCX5hKoK3Nd2VDI6sJ+B3kldnz59bHYeB2fTnXl+DogsL5iCRYFQ==} dependencies: google-protobuf: 3.21.2 dev: false - /@dfinity/principal@1.1.1: - resolution: {integrity: sha512-nXk8Cx01Y76/FAjYlMQHUpiI4cJkafAksgvnWFljIFWQMvOzjo2YCUIcZ3H+aVtEXJpXy61a6aseSSUQuaxlVw==} + /@dfinity/principal@1.2.0: + resolution: {integrity: sha512-7eurqPDL5ptlTTLMJPeiO75FAumXHsWEWDVQaN6XpA3aZtmofNK4Sb5g5Ne9syeuoCJcW3mFBbbFtFNxggxu+g==} dependencies: '@noble/hashes': 1.4.0 dev: false - /@dfinity/utils@2.1.2(@dfinity/agent@1.1.1)(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1): - resolution: {integrity: sha512-iMbprcyLOQFhrvvb5b51acDvSsnXmMEpGBC/dwFNEDQBMPeX/rB3lm9HUOQf3ga1wOs20pYi4Rh42xVXhvmHdg==} + /@dfinity/utils@2.1.3(@dfinity/agent@1.2.0)(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0): + resolution: {integrity: sha512-czFTjrohgDY+vNi0MidYYbYvHzU0ukgWNRXcBDxXMS5vAe0KU+PuFkkt2EQ5w1nczmHxzjZ2A6TqTUU4aILi+A==} peerDependencies: '@dfinity/agent': ^1.0.1 '@dfinity/candid': ^1.0.1 '@dfinity/principal': ^1.0.1 dependencies: - '@dfinity/agent': 1.1.1(@dfinity/candid@1.1.1)(@dfinity/principal@1.1.1) - '@dfinity/candid': 1.1.1(@dfinity/principal@1.1.1) - '@dfinity/principal': 1.1.1 + '@dfinity/agent': 1.2.0(@dfinity/candid@1.2.0)(@dfinity/principal@1.2.0) + '@dfinity/candid': 1.2.0(@dfinity/principal@1.2.0) + '@dfinity/principal': 1.2.0 dev: false /@emotion/babel-plugin@11.11.0: @@ -3009,7 +3009,7 @@ packages: '@metamask/snaps-utils': 7.0.4(@babel/runtime@7.24.1)(@metamask/approval-controller@6.0.1) '@metamask/utils': 8.4.0 '@reduxjs/toolkit': 1.9.7 - express: 4.19.1 + express: 4.19.2 jest-environment-node: 29.7.0 jest-matcher-utils: 29.7.0 readable-stream: 3.6.2 @@ -3654,104 +3654,112 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/rollup-android-arm-eabi@4.13.0: - resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} + /@rollup/rollup-android-arm-eabi@4.13.1: + resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.13.0: - resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} + /@rollup/rollup-android-arm64@4.13.1: + resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.13.0: - resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} + /@rollup/rollup-darwin-arm64@4.13.1: + resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.13.0: - resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} + /@rollup/rollup-darwin-x64@4.13.1: + resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.0: - resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.13.1: + resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.0: - resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} + /@rollup/rollup-linux-arm64-gnu@4.13.1: + resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.13.0: - resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} + /@rollup/rollup-linux-arm64-musl@4.13.1: + resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.0: - resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} + /@rollup/rollup-linux-riscv64-gnu@4.13.1: + resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.0: - resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} + /@rollup/rollup-linux-s390x-gnu@4.13.1: + resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.13.1: + resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.13.0: - resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} + /@rollup/rollup-linux-x64-musl@4.13.1: + resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.0: - resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} + /@rollup/rollup-win32-arm64-msvc@4.13.1: + resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.0: - resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} + /@rollup/rollup-win32-ia32-msvc@4.13.1: + resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.13.0: - resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} + /@rollup/rollup-win32-x64-msvc@4.13.1: + resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==} cpu: [x64] os: [win32] requiresBuild: true @@ -4469,6 +4477,7 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -5192,7 +5201,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001600 - electron-to-chromium: 1.4.715 + electron-to-chromium: 1.4.719 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -6087,8 +6096,8 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - /electron-to-chromium@1.4.715: - resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==} + /electron-to-chromium@1.4.719: + resolution: {integrity: sha512-FbWy2Q2YgdFzkFUW/W5jBjE9dj+804+98E4Pup78JBPnbdb3pv6IneY2JCPKdeKLh3AOKHQeYf+KwLr7mxGh6Q==} /elliptic@6.5.5: resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} @@ -6241,8 +6250,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - /es-module-lexer@1.4.2: - resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==} + /es-module-lexer@1.5.0: + resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} dev: true /es-object-atoms@1.0.0: @@ -6675,6 +6684,7 @@ packages: /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + dev: false /eventemitter2@6.4.9: resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} @@ -6683,6 +6693,7 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + dev: true /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} @@ -6721,8 +6732,8 @@ packages: jest-util: 29.7.0 dev: true - /express@4.19.1: - resolution: {integrity: sha512-K4w1/Bp7y8iSiVObmCrtq8Cs79XjJc/RU2YYkZQ7wpUu5ZyZ7MtPHkqoMz4pf+mgXfNvo2qft8D9OnrH2ABk9w==} + /express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -6771,7 +6782,7 @@ packages: resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} dependencies: - readable-stream: 4.5.2 + readable-stream: 3.6.2 webextension-polyfill: 0.10.0 /fast-deep-equal@2.0.1: @@ -7106,7 +7117,7 @@ packages: jackspeak: 2.3.6 minimatch: 9.0.3 minipass: 7.0.4 - path-scurry: 1.10.1 + path-scurry: 1.10.2 dev: true /glob@7.2.3: @@ -8733,7 +8744,7 @@ packages: resolution: {integrity: sha512-9/mYV1tMGeoFSTMFr94oigJM2qMXJO3hvlibkaQ21HZjVyrfb54bSYyfIIRvAsjY2RCBRg9r2OrT+YbxnMypig==} engines: {node: '>=18'} dependencies: - terser: 5.29.2 + terser: 5.30.0 dev: false /metro-resolver@0.80.7: @@ -9386,8 +9397,8 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.2.0 @@ -9578,6 +9589,7 @@ packages: /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + dev: true /promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} @@ -9919,16 +9931,6 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} engines: {node: '>=8'} @@ -10134,26 +10136,27 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.13.0: - resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} + /rollup@4.13.1: + resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 + '@rollup/rollup-android-arm-eabi': 4.13.1 + '@rollup/rollup-android-arm64': 4.13.1 + '@rollup/rollup-darwin-arm64': 4.13.1 + '@rollup/rollup-darwin-x64': 4.13.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.1 + '@rollup/rollup-linux-arm64-gnu': 4.13.1 + '@rollup/rollup-linux-arm64-musl': 4.13.1 + '@rollup/rollup-linux-riscv64-gnu': 4.13.1 + '@rollup/rollup-linux-s390x-gnu': 4.13.1 + '@rollup/rollup-linux-x64-gnu': 4.13.1 + '@rollup/rollup-linux-x64-musl': 4.13.1 + '@rollup/rollup-win32-arm64-msvc': 4.13.1 + '@rollup/rollup-win32-ia32-msvc': 4.13.1 + '@rollup/rollup-win32-x64-msvc': 4.13.1 fsevents: 2.3.3 dev: true @@ -10874,12 +10877,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.29.2 + terser: 5.30.0 webpack: 5.91.0(@swc/core@1.3.78) dev: true - /terser@5.29.2: - resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} + /terser@5.30.0: + resolution: {integrity: sha512-Y/SblUl5kEyEFzhMAQdsxVHh+utAxd4IuRNJzKywY/4uzSogh3G219jqbDDxYu4MXO9CzY3tSEqmZvW6AoEDJw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -11367,7 +11370,7 @@ packages: dependencies: esbuild: 0.19.12 postcss: 8.4.38 - rollup: 4.13.0 + rollup: 4.13.1 optionalDependencies: fsevents: 2.3.3 dev: true @@ -11484,7 +11487,7 @@ packages: browserslist: 4.23.0 chrome-trace-event: 1.0.3 enhanced-resolve: 5.16.0 - es-module-lexer: 1.4.2 + es-module-lexer: 1.5.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1