diff --git a/.vscode/launch.json b/.vscode/launch.json
index af463338..ec0bc584 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -61,15 +61,17 @@
"sourceMaps": true
},
{
- "name": "Next.js: debug server-side",
+ "name": "Launch Website via Next.js (server-side)",
"type": "node-terminal",
"request": "launch",
+ "cwd": "${workspaceFolder}/apps/website",
"command": "yarn dev"
},
{
- "name": "Next.js: debug client-side",
+ "name": "Attach to Website via Next.js (client-side)",
"type": "chrome",
"request": "launch",
+ "webRoot": "${workspaceFolder}/apps/website",
"url": "http://localhost:3000",
"skipFiles": [
".next/**",
@@ -81,15 +83,17 @@
},
// todo: consider https://code.visualstudio.com/docs/editor/debugging#_compound-launch-configurations instead
// todo: consider client+prelaunch as full stack
+ // todo: consider workspaces https://code.visualstudio.com/docs/editor/multi-root-workspaces#_debugging
{
- "name": "Next.js: debug full stack",
+ "name": "Launch Website via Next.js (full stack)",
"type": "node-terminal",
"request": "launch",
+ "cwd": "${workspaceFolder}/apps/website",
"command": "yarn dev -p 3000",
"serverReadyAction": {
"pattern": "started server on .+, url: (https?://.+)",
"action": "startDebugging",
- "name": "Next.js: debug client-side",
+ "name": "Attach to Website via Next.js (client-side)",
"killOnServerStop": false
},
"skipFiles": [
diff --git a/apps/web/package.json b/apps/web/package.json
index 53991b83..dd2f98fa 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -8,7 +8,7 @@
"preview": "TAMAGUI_TARGET=web vite preview",
"lint": "eslint src",
"typecheck": "tsc",
- "clean": "rimraf node_modules .turbo"
+ "clean": "rimraf node_modules dist .turbo"
},
"dependencies": {
"@status-im/components": "*",
diff --git a/apps/website/package.json b/apps/website/package.json
index c2010e8a..6c288006 100644
--- a/apps/website/package.json
+++ b/apps/website/package.json
@@ -8,7 +8,7 @@
"start": "next start",
"lint": "next lint",
"typecheck": "tsc",
- "clean": "rimraf .next .tamagui .vercel/output node_modules",
+ "clean": "rimraf .next .tamagui .vercel/output node_modules .turbo",
"preview": "next start --port 8151"
},
"dependencies": {
@@ -21,14 +21,17 @@
"@status-im/icons": "*",
"@status-im/js": "*",
"@tamagui/next-theme": "1.11.1",
+ "@vercel/og": "^0.5.4",
"class-variance-authority": "^0.6.0",
"@visx/visx": "^2.18.0",
"d3-array": "^3.2.3",
"d3-time-format": "^4.1.0",
"next": "13.2.4",
+ "qrcode.react": "^3.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-native-web": "^0.18.12",
+ "@tanstack/react-query": "^4.29.7",
"ts-pattern": "^4.3.0"
},
"devDependencies": {
diff --git a/apps/website/src/components/error-page.tsx b/apps/website/src/components/error-page.tsx
new file mode 100644
index 00000000..d7cf3a0e
--- /dev/null
+++ b/apps/website/src/components/error-page.tsx
@@ -0,0 +1,51 @@
+import { Text } from '@status-im/components'
+
+import { ERROR_CODES } from '@/consts/error-codes'
+
+type Props = {
+ errorCode: (typeof ERROR_CODES)[keyof typeof ERROR_CODES]
+}
+
+export const ErrorPage = (props: Props) => {
+ const { errorCode } = props
+
+ switch (errorCode) {
+ // todo!: design review, not in designs
+ case ERROR_CODES.NOT_FOUND:
+ return (
+
+
+
+ Page not found.
+
+
+ )
+
+ // todo!: design review, not in designs
+ case ERROR_CODES.UNVERIFIED_CONTENT:
+ return (
+
+
+
+ Unverified content.
+
+
+ )
+
+ case ERROR_CODES.INTERNAL_SERVER_ERROR:
+ default:
+ return (
+
+
+
+
+ {"Oh no, something's wrong!"}
+
+
+ Try reloading the page or come back later!
+
+
+
+ )
+ }
+}
diff --git a/apps/website/src/components/head.tsx b/apps/website/src/components/head.tsx
new file mode 100644
index 00000000..8bb42724
--- /dev/null
+++ b/apps/website/src/components/head.tsx
@@ -0,0 +1,53 @@
+import Head from 'next/head'
+
+type Props = {
+ index?: boolean
+ children?: React.ReactElement
+ imageUrl?: string
+}
+
+function _Head(props: Props) {
+ const { index = true, children, imageUrl } = props
+ return (
+
+ Status
+
+
+
+ {/* todo: app stores banners/redirects */}
+ {/* todo: eval following meta tags */}
+
+
+
+
+
+
+ {imageUrl && }
+
+
+
+ {/* */}
+
+
+
+
+
+
+
+
+ {/* todo?: except communities; ask product */}
+ {!index && }
+ {/* todo?: entity QR */}
+ {/* todo?: fallback OG */}
+ {children}
+
+ )
+}
+
+export { _Head as Head }
diff --git a/apps/website/src/components/nav-menu.tsx b/apps/website/src/components/nav-menu.tsx
index 328a58cd..8053df8a 100644
--- a/apps/website/src/components/nav-menu.tsx
+++ b/apps/website/src/components/nav-menu.tsx
@@ -85,7 +85,7 @@ export const NavMenu = () => {
}>
- Get Status
+ Sign up for early access
diff --git a/apps/website/src/components/preview-page.tsx b/apps/website/src/components/preview-page.tsx
new file mode 100644
index 00000000..da29a55d
--- /dev/null
+++ b/apps/website/src/components/preview-page.tsx
@@ -0,0 +1,628 @@
+// todo?: rename to preview/onboarding/sharing/conversion-page/screen/invite.tsx
+
+import { useMemo } from 'react'
+
+import { neutral } from '@status-im/colors'
+import {
+ Avatar,
+ Button,
+ ContextTag,
+ Counter,
+ Skeleton,
+ Tag,
+ Text,
+ ToastContainer,
+ useToast,
+} from '@status-im/components'
+import {
+ DownloadIcon,
+ InfoIcon,
+ MembersIcon,
+ QrCodeIcon,
+} from '@status-im/icons'
+import { useQuery } from '@tanstack/react-query'
+import { useRouter } from 'next/router'
+
+import { Head } from '@/components/head'
+import { ERROR_CODES } from '@/consts/error-codes'
+import { useURLData } from '@/hooks/use-url-data'
+import { getRequestClient } from '@/lib/request-client'
+
+import { ErrorPage } from './error-page'
+import { QrDialog } from './qr-dialog'
+
+import type { ChannelInfo, CommunityInfo, UserInfo } from '@status-im/js'
+import type {
+ decodeChannelURLData,
+ decodeCommunityURLData,
+ decodeUserURLData,
+} from '@status-im/js/encode-url-data'
+import type { CSSProperties } from 'react'
+
+type Type = 'community' | 'channel' | 'profile'
+
+type PreviewPageProps = {
+ type: Type
+ unverifiedEncodedData?: string | null
+ index?: boolean
+} & (
+ | {
+ type: 'community'
+ unverifiedDecodedData?: ReturnType | null
+ }
+ | {
+ type: 'channel'
+ unverifiedDecodedData?: ReturnType | null
+ channelUuid?: string
+ }
+ | {
+ type: 'profile'
+ unverifiedDecodedData?: ReturnType | null
+ }
+)
+
+export type VerifiedData =
+ | {
+ type: 'community'
+ info: CommunityInfo
+ }
+ | {
+ type: 'channel'
+ info:
+ | ChannelInfo
+ // if from url
+ | (Omit & {
+ community: Pick
+ })
+ }
+ | {
+ type: 'profile'
+ info: UserInfo
+ }
+
+const INSTRUCTIONS_HEADING: Record = {
+ community: 'How to join this community:',
+ channel: 'How to join this channel:',
+ profile: 'How to connect with this profile:',
+}
+
+const JOIN_BUTTON_LABEL: Record = {
+ community: 'Join community in Status',
+ channel: 'View channel in Status',
+ profile: 'Open profile in Status',
+}
+
+export function PreviewPage(props: PreviewPageProps) {
+ const { type, unverifiedDecodedData, unverifiedEncodedData } = props
+
+ const { asPath } = useRouter()
+
+ const toast = useToast()
+
+ // todo: default og image, not dynamic
+ // const ogImageUrl = getOgImageUrl(props.unverifiedDecodedData)
+ // todo?: pass meta, info as component
+ // todo?: pass image, color as props
+
+ const {
+ publicKey,
+ channelUuid: urlChannelUuid,
+ verifiedURLData,
+ errorCode: urlErrorCode,
+ } = useURLData(type, unverifiedDecodedData, unverifiedEncodedData)
+
+ const {
+ data: verifiedWakuData,
+ isLoading,
+ status,
+ refetch,
+ } = useQuery({
+ refetchOnWindowFocus: false,
+ queryKey: [type],
+ enabled: !!publicKey,
+ queryFn: async function ({ queryKey }): Promise {
+ const client = await getRequestClient()
+
+ switch (queryKey[0]) {
+ case 'community': {
+ const info = await client.fetchCommunity(publicKey!)
+
+ if (!info) {
+ return null
+ }
+
+ return { type: 'community', info }
+ }
+ case 'channel': {
+ const channelUuid =
+ 'channelUuid' in props && props.channelUuid
+ ? props.channelUuid
+ : urlChannelUuid
+
+ if (!channelUuid) {
+ return null
+ }
+
+ const info = await client.fetchChannel(publicKey!, channelUuid)
+
+ if (!info) {
+ return null
+ }
+
+ return { type: 'channel', info }
+ }
+ case 'profile': {
+ const info = await client.fetchUser(publicKey!)
+
+ if (!info) {
+ return null
+ }
+
+ return { type: 'profile', info }
+ }
+ }
+ },
+ onSettled: (data, error) => {
+ if (!data || error) {
+ // todo?: rephrase to "fetch latest"
+ toast.negative("Couldn't fetch information", {
+ action: 'Retry',
+ onAction: refetch,
+ })
+
+ return
+ }
+
+ if (verifiedURLData) {
+ toast.custom('Information just updated', )
+ }
+ },
+ })
+
+ const loading = status === 'loading' || isLoading
+ const verifiedData: VerifiedData | undefined =
+ verifiedWakuData ?? verifiedURLData
+
+ const { avatarURL, bannerURL } = useMemo(() => {
+ if (!verifiedData) {
+ return {}
+ }
+
+ const avatarURL = getAvatarURL(verifiedData)
+ const bannerURL = getBannerURL(verifiedData)
+
+ return { avatarURL, bannerURL }
+ }, [verifiedData])
+
+ if (urlErrorCode) {
+ return
+ }
+
+ if (!loading && !verifiedData) {
+ return
+ }
+
+ if ((loading && !verifiedData) || !verifiedData || !publicKey) {
+ return (
+ <>
+
+
+
+
+ {/* avatar */}
+
+
+
+ {/* display name */}
+
+ {/* description */}
+
+ {/* description */}
+
+
+
+
+ {/* instructions */}
+
+ {/* instructions */}
+
+
+
+
+
+ {/* logo */}
+
+
+
+
+
+
+ {/* banner */}
+
+
+
+ >
+ )
+ }
+
+ return (
+ <>
+
+ <>
+ {/* todo: theme; based on user system settings */}
+ {/* todo: (system or both?) install banner */}
+
+
+
+ {bannerURL && (
+
+ )}
+
+
+
+
+ {/* HERO */}
+
+
+ {verifiedData.type === 'community' && (
+
+ )}
+ {verifiedData.type === 'channel' && (
+
+ )}
+ {verifiedData.type === 'profile' && (
+
+ )}
+
+
+
+ {verifiedData.type === 'channel' && '#'}
+ {verifiedData.info.displayName}
+
+
+ {verifiedData.info.description}
+
+
+ {verifiedData.type === 'community' && (
+ <>
+
+
+
+ {formatNumber(verifiedData.info.membersCount)}
+
+
+ {verifiedData.info.tags?.length > 0 && (
+
+ {verifiedData.info.tags.map(tag => (
+
+ ))}
+
+ )}
+ >
+ )}
+ {verifiedData.type === 'channel' && (
+
+
+ Channel in
+
+
+
+ )}
+ {verifiedData.type === 'profile' && (
+
+ {verifiedData.info.emojiHash}
+
+ )}
+
+
+ {/* INSTRUCTIONS */}
+
+
+
+ {INSTRUCTIONS_HEADING[type]}
+
+
+
+ }
+ disabled
+ >
+ Sign up for early access
+
+
+ {/* todo?: delete step; merge with download */}
+
+ Install Status
+
+
+ Complete the onboarding
+
+
+
+ and voilá
+
+
+
+
+
+
+
+ Have Status already?
+
+ Scan the QR code with your device
+
+
+
+ }
+ >
+ Show QR code
+
+
+
+
+
+ {/* FOOTER */}
+
+
+ Powered by
+
+
+
+
+
+
+
+
+ {bannerURL && (
+
+ )}
+
+
+
+
+
+ >
+ >
+ )
+}
+
+const formatNumber = (n: number) => {
+ const formatter = Intl.NumberFormat('en', { notation: 'compact' })
+ return formatter.format(n)
+}
+
+const getGradientStyles = (data: VerifiedData): CSSProperties => {
+ return {
+ // @ts-expect-error CSSProperties do not handle inline CSS variables
+ '--gradient-color': 'color' in data.info ? data.info.color : neutral[100],
+ }
+}
+
+const getAvatarURL = (data: VerifiedData): string | undefined => {
+ let avatar: Uint8Array | undefined
+ switch (data.type) {
+ case 'community':
+ avatar = data.info.photo
+
+ break
+ case 'profile':
+ avatar = data.info.photo
+
+ break
+ }
+
+ if (!avatar) {
+ return
+ }
+
+ const url = URL.createObjectURL(
+ new Blob([avatar], {
+ type: 'image/jpeg',
+ })
+ )
+
+ return url
+}
+
+const getBannerURL = (data: VerifiedData): string | undefined => {
+ let banner: Uint8Array | undefined
+ switch (data.type) {
+ case 'community':
+ banner = data.info.banner
+
+ break
+ case 'channel':
+ banner =
+ 'banner' in data.info.community ? data.info.community.banner : undefined
+
+ break
+ }
+
+ if (!banner) {
+ return
+ }
+
+ const url = URL.createObjectURL(
+ new Blob([banner], {
+ type: 'image/jpeg',
+ })
+ )
+
+ return url
+}
+
+type ListItemProps = {
+ order: number
+ children: React.ReactNode
+}
+
+const ListItem = (props: ListItemProps) => {
+ const { order, children } = props
+
+ return (
+
+
+ {children}
+
+ )
+}
+
+const StatusLogo = () => (
+
+)
diff --git a/apps/website/src/components/qr-dialog.tsx b/apps/website/src/components/qr-dialog.tsx
new file mode 100644
index 00000000..4f16e77c
--- /dev/null
+++ b/apps/website/src/components/qr-dialog.tsx
@@ -0,0 +1,52 @@
+import { cloneElement, useState } from 'react'
+
+import * as Dialog from '@radix-ui/react-dialog'
+import { Button, Text } from '@status-im/components'
+import { CloseIcon } from '@status-im/icons'
+import { QRCodeSVG } from 'qrcode.react'
+
+type Props = {
+ value: string
+ children: React.ReactElement
+}
+
+export const QrDialog = (props: Props) => {
+ const { value, children } = props
+
+ const [open, setOpen] = useState(false)
+
+ return (
+
+
+ {cloneElement(children, { onPress: () => setOpen(true) })}
+
+
+
+ {/* */}
+
+
+
+
+
+ Scan with Status Desktop or Status Mobile
+
+
+
+
+ }
+ size={32}
+ variant="outline"
+ onPress={() => setOpen(false)}
+ />
+
+
+
+
+
+ )
+}
diff --git a/apps/website/src/consts/error-codes.ts b/apps/website/src/consts/error-codes.ts
new file mode 100644
index 00000000..e0ab1eca
--- /dev/null
+++ b/apps/website/src/consts/error-codes.ts
@@ -0,0 +1,6 @@
+export const ERROR_CODES = {
+ NOT_FOUND: 404,
+ INTERNAL_SERVER_ERROR: 500,
+ UNVERIFIED_CONTENT: 600,
+ INVALID_PUBLIC_KEY: 601,
+}
diff --git a/apps/website/src/hooks/use-url-data.ts b/apps/website/src/hooks/use-url-data.ts
new file mode 100644
index 00000000..f8e7ae6e
--- /dev/null
+++ b/apps/website/src/hooks/use-url-data.ts
@@ -0,0 +1,158 @@
+// todo?: rename to use-encoded-url-data, url-params
+
+import { useEffect, useState } from 'react'
+
+import {
+ deserializePublicKey,
+ indicesToTags,
+ publicKeyToColorHash,
+ publicKeyToEmojiHash,
+ verifyEncodedURLData,
+} from '@status-im/js'
+import { decodeVerificationURLHash } from '@status-im/js/encode-url-hash'
+
+import { ERROR_CODES } from '@/consts/error-codes'
+
+import type { VerifiedData } from '@/components/preview-page'
+import type { ChannelInfo, CommunityInfo, UserInfo } from '@status-im/js'
+import type {
+ decodeChannelURLData,
+ decodeCommunityURLData,
+ decodeUserURLData,
+} from '@status-im/js/encode-url-data'
+
+export const useURLData = (
+ type: 'community' | 'channel' | 'profile',
+ unverifiedDecodedData:
+ | ReturnType
+ | ReturnType
+ | ReturnType
+ | undefined
+ | null,
+ unverifiedEncodedData: string | undefined | null
+) => {
+ const [publicKey, setPublicKey] = useState()
+ const [channelUuid, setChannelUuid] = useState()
+ const [info, setInfo] = useState()
+ const [error, setError] = useState()
+
+ const compressPublicKey = type !== 'profile'
+
+ useEffect(() => {
+ try {
+ // todo: set constrains on url data (e.g. max lenght, byte)
+ // todo: decoded url data againts schema (e.g. length)
+ // if (/* invalid schema */) {
+ // return
+ // }
+
+ if (!unverifiedDecodedData || !unverifiedEncodedData) {
+ const hash = window.location.hash.replace('#', '')
+
+ if (!hash) {
+ setError('NOT_FOUND')
+
+ return
+ }
+
+ try {
+ const publicKey = deserializePublicKey(hash, {
+ compress: compressPublicKey,
+ })
+
+ setPublicKey(publicKey)
+ } catch (error) {
+ console.error(error)
+ setError('INVALID_PUBLIC_KEY')
+ }
+
+ return
+ }
+
+ const hash = window.location.hash.replace('#', '')
+ const { signature, publicKey } = decodeVerificationURLHash(hash)
+
+ if (!signature || !publicKey) {
+ setError('UNVERIFIED_CONTENT')
+
+ return
+ }
+
+ if (!verifyEncodedURLData(unverifiedEncodedData, hash)) {
+ setError('UNVERIFIED_CONTENT')
+
+ return
+ }
+
+ const deserializedPublicKey = deserializePublicKey(publicKey, {
+ compress: compressPublicKey,
+ })
+
+ const verifiedDecodedData = unverifiedDecodedData
+ switch (type) {
+ case 'community': {
+ const data = verifiedDecodedData as Required<
+ ReturnType
+ >
+ const info: CommunityInfo = {
+ displayName: data.displayName,
+ description: data.description,
+ color: data.color,
+ membersCount: data.membersCount,
+ tags: indicesToTags(data.tagIndices),
+ }
+
+ setInfo({ type: 'community', info })
+
+ break
+ }
+ case 'channel': {
+ const data = verifiedDecodedData as Required<
+ ReturnType
+ >
+ const info: Omit & {
+ community: Pick
+ } = {
+ displayName: data.displayName,
+ description: data.description,
+ color: data.color,
+ emoji: data.emoji,
+ community: { displayName: data.community.displayName },
+ }
+
+ setInfo({ type: 'channel', info })
+ setChannelUuid(data.uuid)
+
+ break
+ }
+ case 'profile': {
+ const data = verifiedDecodedData as Required<
+ ReturnType
+ >
+ const info: UserInfo = {
+ displayName: data.displayName,
+ description: data.description,
+ colorHash: publicKeyToColorHash(deserializedPublicKey),
+ emojiHash: publicKeyToEmojiHash(deserializedPublicKey),
+ }
+
+ setInfo({ type: 'profile', info })
+
+ break
+ }
+ }
+
+ setPublicKey(deserializedPublicKey)
+ } catch (error) {
+ console.error(error)
+ setError('INTERNAL_SERVER_ERROR')
+ }
+ }, []) // eslint-disable-line react-hooks/exhaustive-deps
+
+ return {
+ publicKey,
+ channelUuid,
+ verifiedURLData: info,
+ errorCode: error ? ERROR_CODES[error] : undefined,
+ }
+}
diff --git a/apps/website/src/lib/request-client.ts b/apps/website/src/lib/request-client.ts
new file mode 100644
index 00000000..59e01652
--- /dev/null
+++ b/apps/website/src/lib/request-client.ts
@@ -0,0 +1,15 @@
+import { createRequestClient } from '@status-im/js'
+
+import type { RequestClient } from '@status-im/js'
+
+let client: RequestClient | undefined
+
+export async function getRequestClient(): Promise {
+ if (!client) {
+ client = await createRequestClient({ environment: 'production' })
+
+ return client
+ }
+
+ return client
+}
diff --git a/apps/website/src/pages/404.tsx b/apps/website/src/pages/404.tsx
new file mode 100644
index 00000000..7ead005f
--- /dev/null
+++ b/apps/website/src/pages/404.tsx
@@ -0,0 +1,7 @@
+// todo: user per preiview page only
+import { ErrorPage } from '@/components/error-page'
+import { ERROR_CODES } from '@/consts/error-codes'
+
+export default function Custom404() {
+ return
+}
diff --git a/apps/website/src/pages/500.tsx b/apps/website/src/pages/500.tsx
new file mode 100644
index 00000000..6209ee17
--- /dev/null
+++ b/apps/website/src/pages/500.tsx
@@ -0,0 +1,6 @@
+import { ErrorPage } from '@/components/error-page'
+import { ERROR_CODES } from '@/consts/error-codes'
+
+export default function Custom500() {
+ return
+}
diff --git a/apps/website/src/pages/_app.tsx b/apps/website/src/pages/_app.tsx
index 75174466..30fd7e0e 100644
--- a/apps/website/src/pages/_app.tsx
+++ b/apps/website/src/pages/_app.tsx
@@ -1,12 +1,15 @@
import '@/styles/global.css'
import '@/styles/nav-nested-links.css'
-import { Provider } from '@status-im/components'
+import { ThemeProvider } from '@status-im/components'
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { Inter } from 'next/font/google'
import type { Page, PageLayout } from 'next'
import type { AppProps } from 'next/app'
+const queryClient = new QueryClient()
+
const inter = Inter({
variable: '--font-inter',
weight: ['400', '500', '600', '700'],
@@ -22,7 +25,9 @@ export default function App({ Component, pageProps }: Props) {
return (
-
{getLayout()}
+
+ {getLayout()}
+
)
}
diff --git a/apps/website/src/pages/c/[slug].tsx b/apps/website/src/pages/c/[slug].tsx
new file mode 100644
index 00000000..4ff14bab
--- /dev/null
+++ b/apps/website/src/pages/c/[slug].tsx
@@ -0,0 +1,22 @@
+import { decodeCommunityURLData } from '@status-im/js/encode-url-data'
+
+import { PreviewPage } from '@/components/preview-page'
+import { createGetServerSideProps } from '@/server/ssr'
+
+import type { ServerSideProps } from '@/server/ssr'
+
+export const getServerSideProps = createGetServerSideProps(
+ decodeCommunityURLData
+)
+
+export default function CommunityPreviewPage(
+ props: ServerSideProps>
+) {
+ return (
+
+ )
+}
diff --git a/apps/website/src/pages/c/index.tsx b/apps/website/src/pages/c/index.tsx
new file mode 100644
index 00000000..4b54cfca
--- /dev/null
+++ b/apps/website/src/pages/c/index.tsx
@@ -0,0 +1,5 @@
+import { PreviewPage } from '@/components/preview-page'
+
+export default function CommunityPreviewPage() {
+ return
+}
diff --git a/apps/website/src/pages/cc/[slug].tsx b/apps/website/src/pages/cc/[slug].tsx
new file mode 100644
index 00000000..f6c816b8
--- /dev/null
+++ b/apps/website/src/pages/cc/[slug].tsx
@@ -0,0 +1,21 @@
+import { decodeChannelURLData } from '@status-im/js/encode-url-data'
+
+import { PreviewPage } from '@/components/preview-page'
+import { createGetServerSideProps } from '@/server/ssr'
+
+import type { ServerSideProps } from '@/server/ssr'
+
+export const getServerSideProps = createGetServerSideProps(decodeChannelURLData)
+
+export default function ChannelPreviewPage(
+ props: ServerSideProps>
+) {
+ return (
+
+ )
+}
diff --git a/apps/website/src/pages/index.tsx b/apps/website/src/pages/index.tsx
index d5bafa64..aaee1e1e 100644
--- a/apps/website/src/pages/index.tsx
+++ b/apps/website/src/pages/index.tsx
@@ -25,7 +25,7 @@ const HomePage: Page = () => {
}>
- Get Status
+ Sign up for early access
}>
Watch Video
diff --git a/apps/website/src/pages/u/[slug].tsx b/apps/website/src/pages/u/[slug].tsx
new file mode 100644
index 00000000..00c96bd3
--- /dev/null
+++ b/apps/website/src/pages/u/[slug].tsx
@@ -0,0 +1,20 @@
+import { decodeUserURLData } from '@status-im/js/encode-url-data'
+
+import { PreviewPage } from '@/components/preview-page'
+import { createGetServerSideProps } from '@/server/ssr'
+
+import type { ServerSideProps } from '@/server/ssr'
+
+export const getServerSideProps = createGetServerSideProps(decodeUserURLData)
+
+export default function UserPreviewPage(
+ props: ServerSideProps
>
+) {
+ return (
+
+ )
+}
diff --git a/apps/website/src/pages/u/index.tsx b/apps/website/src/pages/u/index.tsx
new file mode 100644
index 00000000..3b69fad6
--- /dev/null
+++ b/apps/website/src/pages/u/index.tsx
@@ -0,0 +1,5 @@
+import { PreviewPage } from '@/components/preview-page'
+
+export default function UserPreviewPage() {
+ return
+}
diff --git a/apps/website/src/server/og.ts b/apps/website/src/server/og.ts
new file mode 100644
index 00000000..bffc96f4
--- /dev/null
+++ b/apps/website/src/server/og.ts
@@ -0,0 +1,33 @@
+// see https://vercel.com/docs/concepts/functions/edge-functions/og-image-generation
+
+import { ImageResponse } from '@vercel/og'
+
+import type { NextRequest } from 'next/server'
+
+export const config = {
+ runtime: 'edge',
+}
+
+// todo?: set cache header too
+export function createHandler(
+ createComponent: (url: URL) => React.ReactElement
+) {
+ const handler = async (req: NextRequest) => {
+ try {
+ const component = createComponent(new URL(req.url))
+
+ return new ImageResponse(component, {
+ width: 1200,
+ height: 630,
+ })
+ } catch (error) {
+ console.error(error)
+
+ return new Response(`Failed to generate the image`, {
+ status: 500,
+ })
+ }
+ }
+
+ return handler
+}
diff --git a/apps/website/src/server/ssr.ts b/apps/website/src/server/ssr.ts
new file mode 100644
index 00000000..df8ed22e
--- /dev/null
+++ b/apps/website/src/server/ssr.ts
@@ -0,0 +1,90 @@
+import type {
+ decodeChannelURLData,
+ decodeCommunityURLData,
+ decodeUserURLData,
+} from '@status-im/js/encode-url-data'
+import type { GetServerSideProps } from 'next'
+import type { ParsedUrlQuery } from 'querystring'
+
+type DecodeType =
+ | typeof decodeCommunityURLData
+ | typeof decodeChannelURLData
+ | typeof decodeUserURLData
+
+export type ServerSideProps> = {
+ /**
+ * For verifying on client without decoding or re-encoding.
+ *
+ * Verification in general is done on encoded data, so it is not
+ * decoded, decompressed and deserialized unnecessarily if not to be
+ * displayed or othwerwise needed.
+ */
+ uverifiedEncodedData: string | null
+ /**
+ * For instaneous preview even if the data is not verified yet.
+ */
+ unverifiedDecodedData: T | null
+ channelUuid?: string
+}
+
+type Query = ParsedUrlQuery & {
+ slug: string
+}
+
+export function createGetServerSideProps(decodeURLData: DecodeType) {
+ const getServerSideProps: GetServerSideProps<
+ ServerSideProps,
+ Query
+ > = async context => {
+ try {
+ const { params, res } = context
+
+ const channelUuid = params!.slug.match(
+ /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i
+ )
+
+ if (channelUuid) {
+ const props: ServerSideProps = {
+ channelUuid: channelUuid[0],
+ uverifiedEncodedData: null,
+ unverifiedDecodedData: null,
+ }
+
+ return { props }
+ }
+
+ const encodedData = params!.slug
+
+ if (!encodedData) {
+ const props: ServerSideProps = {
+ uverifiedEncodedData: null,
+ unverifiedDecodedData: null,
+ }
+
+ return { props }
+ }
+
+ const decodedData = decodeURLData(encodedData)
+ const props: ServerSideProps = {
+ uverifiedEncodedData: encodedData,
+ unverifiedDecodedData: decodedData || null,
+ }
+
+ // fixme: set Cache-Control
+ res.setHeader(
+ 'Cache-Control',
+ 'public, max-age=0, s-maxage=180, stale-while-revalidate=239'
+ // 'public, max-age=0, s-maxage=1, stale-while-revalidate=900',
+ // 'public, max-age=0, s-maxage=600, stale-while-revalidate=900',
+ // 'public, s-maxage=10, stale-while-revalidate=59',
+ // 'public, max-age=31536000, immutable',
+ )
+
+ return { props }
+ } catch (error) {
+ return { notFound: true }
+ }
+ }
+
+ return getServerSideProps
+}
diff --git a/apps/website/src/styles/app.css b/apps/website/src/styles/app.css
deleted file mode 100644
index 81db796a..00000000
--- a/apps/website/src/styles/app.css
+++ /dev/null
@@ -1,36 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-html,
-body,
-#__next {
- height: 100%;
- overscroll-behavior: none;
- user-select: none;
- color: #000;
-}
-
-*::selection {
- color: #fff;
- background: hsla(229, 71%, 57%, 1);
-}
-
-#app {
- position: relative;
- isolation: isolate;
- height: 100%;
-}
-
-/* Animation for skeleton placeholder */
-@keyframes gradient {
- 0% {
- background-position: 0% 50%;
- }
- 50% {
- background-position: 100% 50%;
- }
- 100% {
- background-position: 0% 50%;
- }
-}
diff --git a/apps/website/src/styles/global.css b/apps/website/src/styles/global.css
index 5e825901..c8b3300a 100644
--- a/apps/website/src/styles/global.css
+++ b/apps/website/src/styles/global.css
@@ -4,7 +4,19 @@
@layer base {
body {
- @apply !bg-neutral-100;
+ @apply bg-neutral-100;
+ }
+}
+
+@keyframes gradient {
+ 0% {
+ background-position: 0% 50%;
+ }
+ 50% {
+ background-position: 100% 50%;
+ }
+ 100% {
+ background-position: 0% 50%;
}
}
@@ -44,6 +56,7 @@ body,
#__next,
#app {
width: 100vw;
+ height: 100%;
min-height: 100vh;
/* overflow: hidden; */
overscroll-behavior-y: none; /* not working on Safari */
diff --git a/apps/website/tsconfig.json b/apps/website/tsconfig.json
index 78b35344..d32c364d 100644
--- a/apps/website/tsconfig.json
+++ b/apps/website/tsconfig.json
@@ -10,12 +10,13 @@
"baseUrl": ".",
"paths": {
"react-native": ["react-native-web"],
- "@/*": ["./src/*"]
- // "@status-im/*": ["./node_modules/@status-im/*"]
- // "@status-im/js": ["./node_modules/@status-im/js/packages/status-js"],
- // "@status-im/components": [
- // "./node_modules/@status-im/components/packages/components"
- // ]
+ "@/*": ["./src/*"],
+ "@status-im/js/encode-url-data": [
+ "../../packages/status-js/src/utils/encode-url-data"
+ ],
+ "@status-im/js/encode-url-hash": [
+ "../../packages/status-js/src/utils/encode-url-hash"
+ ]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
diff --git a/examples/with-next/package.json b/examples/with-next/package.json
index b8626f55..43f7b084 100644
--- a/examples/with-next/package.json
+++ b/examples/with-next/package.json
@@ -7,7 +7,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
- "lint": "next lint"
+ "lint": "next lint",
+ "clean": "rimraf node_modules .next"
},
"dependencies": {
"@status-im/react": "^0.1.1",
diff --git a/examples/with-vite/package.json b/examples/with-vite/package.json
index 63854916..685f1099 100644
--- a/examples/with-vite/package.json
+++ b/examples/with-vite/package.json
@@ -6,7 +6,8 @@
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
- "start": "vite preview"
+ "start": "vite preview",
+ "clean": "rimraf node_modules dist"
},
"dependencies": {
"@status-im/react": "^0.1.1",
diff --git a/packages/components/src/avatar/avatar.stories.tsx b/packages/components/src/avatar/avatar.stories.tsx
index c46b10a1..ccfe15fa 100644
--- a/packages/components/src/avatar/avatar.stories.tsx
+++ b/packages/components/src/avatar/avatar.stories.tsx
@@ -323,11 +323,12 @@ export const community: StoryObj = {
),
}
-type ChannelArgs = Pick
+type ChannelArgs = Pick
export const Channel: StoryObj = {
args: {
type: 'channel',
+ name: 'random',
emoji: '🍑',
} as ChannelArgs,
parameters: {
diff --git a/packages/components/src/avatar/avatar.tsx b/packages/components/src/avatar/avatar.tsx
index b8181cd3..3d9c86bc 100644
--- a/packages/components/src/avatar/avatar.tsx
+++ b/packages/components/src/avatar/avatar.tsx
@@ -42,7 +42,8 @@ type WalletAvatarProps = {
type ChannelAvatarProps = {
type: 'channel'
size: 80 | 32 | 28 | 24 | 20
- emoji: string
+ name: string
+ emoji?: string
backgroundColor?: ColorTokens
background?: ColorTokens
lock?: 'locked' | 'unlocked'
@@ -268,7 +269,15 @@ const Avatar = (props: AvatarProps) => {
)
case 'channel':
- return {props.emoji}
+ if (props.emoji) {
+ return {props.emoji}
+ }
+
+ return (
+
+ {props.name.slice(0, 1).toUpperCase()}
+
+ )
case 'icon':
return cloneElement(props.icon, { color: props.color ?? '$white-100' })
default:
diff --git a/packages/components/src/button/button.tsx b/packages/components/src/button/button.tsx
index 7f5f82b0..2864137d 100644
--- a/packages/components/src/button/button.tsx
+++ b/packages/components/src/button/button.tsx
@@ -63,7 +63,7 @@ const Button = (props: Props, ref: Ref) => {
size={size}
iconOnly={iconOnly}
>
- {icon ? cloneElement(icon, { color: textColor }) : null}
+ {icon ? cloneElement(icon, { color: '$neutral-40' }) : null}
{children}
diff --git a/packages/components/src/channel/channel.tsx b/packages/components/src/channel/channel.tsx
index 78d979bf..74fa4769 100644
--- a/packages/components/src/channel/channel.tsx
+++ b/packages/components/src/channel/channel.tsx
@@ -95,7 +95,13 @@ const Channel = (props: Props) => {
state={active ? 'active' : selected ? 'selected' : undefined}
>
-
+
# {children}
diff --git a/packages/components/src/context-tag/context-tag.tsx b/packages/components/src/context-tag/context-tag.tsx
index a8961469..14eee347 100644
--- a/packages/components/src/context-tag/context-tag.tsx
+++ b/packages/components/src/context-tag/context-tag.tsx
@@ -22,7 +22,7 @@ type Props = {
icon: React.ReactElement
}
}
- | { type: 'community'; community: { name: string; src: string } }
+ | { type: 'community'; community: { name: string; src?: string } }
| {
type: 'channel'
channel: { communityName: string; src: string; name: string }
diff --git a/packages/components/src/counter/counter.tsx b/packages/components/src/counter/counter.tsx
index 840b4d7f..0f77cbd2 100644
--- a/packages/components/src/counter/counter.tsx
+++ b/packages/components/src/counter/counter.tsx
@@ -1,5 +1,4 @@
-import { styled } from '@tamagui/core'
-import { View } from 'react-native'
+import { Stack, styled } from '@tamagui/core'
import { Text } from '../text'
@@ -29,7 +28,7 @@ const Counter = (props: Props) => {
export { Counter }
export type { Props as CounterProps }
-const Base = styled(View, {
+const Base = styled(Stack, {
padding: 2,
display: 'inline-flex',
justifyContent: 'center',
@@ -37,7 +36,7 @@ const Base = styled(View, {
flexBasis: 'fit-content',
})
-const Content = styled(View, {
+const Content = styled(Stack, {
backgroundColor: '$primary-50',
paddingHorizontal: 3,
paddingVertical: 0,
diff --git a/packages/components/src/index.tsx b/packages/components/src/index.tsx
index 30978b41..d47ecf59 100644
--- a/packages/components/src/index.tsx
+++ b/packages/components/src/index.tsx
@@ -3,6 +3,8 @@ export * from './avatar'
export * from './button'
export * from './community'
export * from './composer'
+export * from './context-tag'
+export * from './counter'
export * from './dividers'
export * from './dynamic-button'
export * from './gap-messages'
diff --git a/packages/components/src/provider/index.tsx b/packages/components/src/provider/index.tsx
index e481efc8..165af642 100644
--- a/packages/components/src/provider/index.tsx
+++ b/packages/components/src/provider/index.tsx
@@ -1,3 +1,4 @@
export { useAppDispatch, useAppState } from './app-context'
export { useChatDispatch, useChatState } from './chat-context'
export { Provider } from './provider'
+export { ThemeProvider } from './theme-context'
diff --git a/packages/components/src/tag/tag.tsx b/packages/components/src/tag/tag.tsx
index a90f613b..f429c437 100644
--- a/packages/components/src/tag/tag.tsx
+++ b/packages/components/src/tag/tag.tsx
@@ -69,6 +69,7 @@ const Base = styled(Stack, {
borderWidth: 1,
borderColor: '$neutral-20',
borderRadius: '$full',
+ backgroundColor: '$white-100',
variants: {
size: {
diff --git a/packages/status-js/package.json b/packages/status-js/package.json
index 4dd94769..37f7e3de 100644
--- a/packages/status-js/package.json
+++ b/packages/status-js/package.json
@@ -3,9 +3,26 @@
"version": "0.2.0",
"license": "MIT OR Apache-2.0",
"type": "module",
- "main": "./dist/index.cjs",
+ "main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist/types/index.d.ts",
+ "import": "./dist/index.js"
+ },
+ "./encode-url-data": {
+ "types": "./dist/types/utils/encode-url-data.d.ts",
+ "browser": null,
+ "import": "./dist/encode-url-data.js"
+ },
+ "./encode-url-hash": {
+ "types": "./dist/types/utils/encode-url-hash.d.ts",
+ "browser": null,
+ "import": "./dist/encode-url-hash.js"
+ },
+ "./package.json": "./package.json"
+ },
"repository": {
"url": "https://github.com/status-im/status-web.git",
"directory": "packages/status-js",
@@ -50,8 +67,5 @@
],
"publishConfig": {
"access": "public"
- },
- "browser": {
- "./src/utils/encode-url-data": false
}
}
diff --git a/packages/status-js/src/client/account.ts b/packages/status-js/src/client/account.ts
index 3cd91413..f500daeb 100644
--- a/packages/status-js/src/client/account.ts
+++ b/packages/status-js/src/client/account.ts
@@ -1,11 +1,12 @@
import { getPublicKey, utils } from 'ethereum-cryptography/secp256k1'
import { bytesToHex, hexToBytes } from 'ethereum-cryptography/utils'
-import { compressPublicKey } from '../utils/compress-public-key'
-import { createUserURLWithPublicKey } from '../utils/create-url'
+import { createUserURLWithChatKey } from '../utils/create-url'
import { generateUsername } from '../utils/generate-username'
+import { serializePublicKey } from '../utils/serialize-public-key'
import { signData, verifySignedData } from '../utils/sign-data'
+import type { ContactCodeAdvertisement } from '../protos/push-notifications_pb'
import type { Client } from './client'
import type { Community } from './community/community'
@@ -18,7 +19,9 @@ export class Account {
publicKey: string
chatKey: string
username: string
+ ensName?: string
membership: MembershipStatus
+ description?: ContactCodeAdvertisement
constructor(client: Client, initialAccount?: Account) {
this.#client = client
@@ -30,13 +33,13 @@ export class Account {
this.privateKey = bytesToHex(privateKey)
this.publicKey = bytesToHex(publicKey)
- this.chatKey = '0x' + compressPublicKey(this.publicKey)
+ this.chatKey = serializePublicKey('0x' + this.publicKey)
this.username = generateUsername('0x' + this.publicKey)
this.membership = initialAccount ? initialAccount.membership : 'none'
}
public get link(): URL {
- return createUserURLWithPublicKey(this.chatKey)
+ return createUserURLWithChatKey(this.chatKey)
}
async sign(payload: Uint8Array | string) {
diff --git a/packages/status-js/src/client/chat.ts b/packages/status-js/src/client/chat.ts
index bde21051..1692c592 100644
--- a/packages/status-js/src/client/chat.ts
+++ b/packages/status-js/src/client/chat.ts
@@ -11,7 +11,7 @@ import {
} from '../protos/chat-message_pb'
import { EmojiReaction, EmojiReaction_Type } from '../protos/emoji-reaction_pb'
import { MessageType } from '../protos/enums_pb'
-import { createChannelURLWithPublicKey } from '../utils/create-url'
+import { createChannelURLWithChatKey } from '../utils/create-url'
import { generateKeyFromPassword } from '../utils/generate-key-from-password'
import { getNextClock } from '../utils/get-next-clock'
import { idToContentTopic } from '../utils/id-to-content-topic'
@@ -155,10 +155,7 @@ export class Chat {
}
public get link(): URL {
- return createChannelURLWithPublicKey(
- this.uuid,
- this.client.community.publicKey
- )
+ return createChannelURLWithChatKey(this.uuid, this.client.community.chatKey)
}
public onChange = (callback: (description: CommunityChat) => void) => {
diff --git a/packages/status-js/src/client/community/community.ts b/packages/status-js/src/client/community/community.ts
index 5e051d10..1a7e4d16 100644
--- a/packages/status-js/src/client/community/community.ts
+++ b/packages/status-js/src/client/community/community.ts
@@ -7,10 +7,11 @@ import { ApplicationMetadataMessage_Type } from '../../protos/application-metada
import { CommunityRequestToJoin } from '../../protos/communities_pb'
import { MessageType } from '../../protos/enums_pb'
import { compressPublicKey } from '../../utils/compress-public-key'
-import { createCommunityURLWithPublicKey } from '../../utils/create-url'
+import { createCommunityURLWithChatKey } from '../../utils/create-url'
import { generateKeyFromPassword } from '../../utils/generate-key-from-password'
import { getNextClock } from '../../utils/get-next-clock'
import { idToContentTopic } from '../../utils/id-to-content-topic'
+import { serializePublicKey } from '../../utils/serialize-public-key'
import { Chat } from '../chat'
import { Member } from '../member'
@@ -27,6 +28,7 @@ export class Community {
/** Compressed. */
public publicKey: string
+ public chatKey: string
public id: string
private contentTopic!: string
private symmetricKey!: Uint8Array
@@ -40,6 +42,7 @@ export class Community {
this.client = client
this.publicKey = publicKey
+ this.chatKey = serializePublicKey(this.publicKey)
this.id = publicKey.replace(/^0[xX]/, '')
this.#clock = BigInt(Date.now())
@@ -85,7 +88,7 @@ export class Community {
}
public get link(): URL {
- return createCommunityURLWithPublicKey(this.publicKey)
+ return createCommunityURLWithChatKey(this.chatKey)
}
public fetch = async () => {
diff --git a/packages/status-js/src/client/member.ts b/packages/status-js/src/client/member.ts
index 22e8ddf0..d77a6aa8 100644
--- a/packages/status-js/src/client/member.ts
+++ b/packages/status-js/src/client/member.ts
@@ -1,7 +1,7 @@
-import { compressPublicKey } from '../utils/compress-public-key'
-import { createUserURLWithPublicKey } from '../utils/create-url'
+import { createUserURLWithChatKey } from '../utils/create-url'
import { generateUsername } from '../utils/generate-username'
import { publicKeyToColorHash } from '../utils/public-key-to-color-hash'
+import { serializePublicKey } from '../utils/serialize-public-key'
import type { ColorHash } from '../utils/public-key-to-color-hash'
@@ -13,12 +13,12 @@ export class Member {
constructor(publicKey: string) {
this.publicKey = publicKey
- this.chatKey = '0x' + compressPublicKey(publicKey)
+ this.chatKey = serializePublicKey(this.publicKey)
this.username = generateUsername(publicKey)
this.colorHash = publicKeyToColorHash(publicKey)
}
public get link(): URL {
- return createUserURLWithPublicKey(this.chatKey)
+ return createUserURLWithChatKey(this.chatKey)
}
}
diff --git a/packages/status-js/src/index.ts b/packages/status-js/src/index.ts
index 0a0ce10e..5d07bcf6 100644
--- a/packages/status-js/src/index.ts
+++ b/packages/status-js/src/index.ts
@@ -13,12 +13,13 @@ export type { Reaction, Reactions } from './client/community/get-reactions'
export type { Member } from './client/member'
export { peers } from './consts/peers'
export { EthereumClient } from './ethereum-client/ethereum-client'
+export { indicesToTags } from './request-client/indices-to-tags'
export type { ChannelInfo } from './request-client/map-channel'
export type { CommunityInfo } from './request-client/map-community'
export type { UserInfo } from './request-client/map-user'
export { RequestClient } from './request-client/request-client'
export { createRequestClient } from './request-client/request-client'
export { deserializePublicKey } from './utils/deserialize-public-key'
-export * from './utils/encode-url-data'
+export { publicKeyToColorHash } from './utils/public-key-to-color-hash'
export { publicKeyToEmojiHash } from './utils/public-key-to-emoji-hash'
export { verifyEncodedURLData } from './utils/sign-url-data'
diff --git a/packages/status-js/src/protos/communities.proto b/packages/status-js/src/protos/communities.proto
index 3b1d29de..b9d30c12 100644
--- a/packages/status-js/src/protos/communities.proto
+++ b/packages/status-js/src/protos/communities.proto
@@ -1,7 +1,7 @@
syntax = "proto3";
import "chat-identity.proto";
-import "url-data.proto";
+import "url.proto";
message Grant {
bytes community_id = 1;
diff --git a/packages/status-js/src/protos/communities_pb.ts b/packages/status-js/src/protos/communities_pb.ts
index b0e3c342..48f29ce3 100644
--- a/packages/status-js/src/protos/communities_pb.ts
+++ b/packages/status-js/src/protos/communities_pb.ts
@@ -13,7 +13,7 @@ import type {
} from '@bufbuild/protobuf'
import { Message, proto3, protoInt64 } from '@bufbuild/protobuf'
import { ChatIdentity } from './chat-identity_pb.js'
-import { URLParams } from './url-data_pb.js'
+import { URLParams } from './url_pb.js'
/**
* @generated from message Grant
diff --git a/packages/status-js/src/protos/push-notifications.proto b/packages/status-js/src/protos/push-notifications.proto
index 19696db9..24ed7e01 100644
--- a/packages/status-js/src/protos/push-notifications.proto
+++ b/packages/status-js/src/protos/push-notifications.proto
@@ -1,7 +1,7 @@
syntax = "proto3";
import "chat-identity.proto";
-import "url-data.proto";
+import "url.proto";
message PushNotificationRegistration {
enum TokenType {
diff --git a/packages/status-js/src/protos/push-notifications_pb.ts b/packages/status-js/src/protos/push-notifications_pb.ts
index d773c191..649778f1 100644
--- a/packages/status-js/src/protos/push-notifications_pb.ts
+++ b/packages/status-js/src/protos/push-notifications_pb.ts
@@ -13,7 +13,7 @@ import type {
} from '@bufbuild/protobuf'
import { Message, proto3, protoInt64 } from '@bufbuild/protobuf'
import { ChatIdentity } from './chat-identity_pb.js'
-import { URLParams } from './url-data_pb.js'
+import { URLParams } from './url_pb.js'
/**
* @generated from message PushNotificationRegistration
diff --git a/packages/status-js/src/protos/url-data.proto b/packages/status-js/src/protos/url.proto
similarity index 82%
rename from packages/status-js/src/protos/url-data.proto
rename to packages/status-js/src/protos/url.proto
index a8a1c697..b7028e3e 100644
--- a/packages/status-js/src/protos/url-data.proto
+++ b/packages/status-js/src/protos/url.proto
@@ -23,11 +23,21 @@ message User {
string color = 3;
}
+message Verification {
+ string signature = 1;
+ string public_key = 2;
+}
+
message URLData {
// Community, Channel, or User
bytes content = 1;
}
+message URLHash {
+ // Verification
+ bytes content = 1;
+}
+
message URLParams {
string encoded_url_data = 1;
// Signature of encoded URL data
diff --git a/packages/status-js/src/protos/url-data_pb.ts b/packages/status-js/src/protos/url_pb.ts
similarity index 76%
rename from packages/status-js/src/protos/url-data_pb.ts
rename to packages/status-js/src/protos/url_pb.ts
index e1e87535..9af218f1 100644
--- a/packages/status-js/src/protos/url-data_pb.ts
+++ b/packages/status-js/src/protos/url_pb.ts
@@ -1,5 +1,5 @@
// @generated by protoc-gen-es v1.0.0 with parameter "target=ts"
-// @generated from file url-data.proto (syntax proto3)
+// @generated from file url.proto (syntax proto3)
/* eslint-disable */
// @ts-nocheck
@@ -267,6 +267,61 @@ export class User extends Message {
}
}
+/**
+ * @generated from message Verification
+ */
+export class Verification extends Message {
+ /**
+ * @generated from field: string signature = 1;
+ */
+ signature = ''
+
+ /**
+ * @generated from field: string public_key = 2;
+ */
+ publicKey = ''
+
+ constructor(data?: PartialMessage) {
+ super()
+ proto3.util.initPartial(data, this)
+ }
+
+ static readonly runtime = proto3
+ static readonly typeName = 'Verification'
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: 'signature', kind: 'scalar', T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: 'public_key', kind: 'scalar', T: 9 /* ScalarType.STRING */ },
+ ])
+
+ static fromBinary(
+ bytes: Uint8Array,
+ options?: Partial
+ ): Verification {
+ return new Verification().fromBinary(bytes, options)
+ }
+
+ static fromJson(
+ jsonValue: JsonValue,
+ options?: Partial
+ ): Verification {
+ return new Verification().fromJson(jsonValue, options)
+ }
+
+ static fromJsonString(
+ jsonString: string,
+ options?: Partial
+ ): Verification {
+ return new Verification().fromJsonString(jsonString, options)
+ }
+
+ static equals(
+ a: Verification | PlainMessage | undefined,
+ b: Verification | PlainMessage | undefined
+ ): boolean {
+ return proto3.util.equals(Verification, a, b)
+ }
+}
+
/**
* @generated from message URLData
*/
@@ -318,6 +373,57 @@ export class URLData extends Message {
}
}
+/**
+ * @generated from message URLHash
+ */
+export class URLHash extends Message {
+ /**
+ * Verification
+ *
+ * @generated from field: bytes content = 1;
+ */
+ content = new Uint8Array(0)
+
+ constructor(data?: PartialMessage) {
+ super()
+ proto3.util.initPartial(data, this)
+ }
+
+ static readonly runtime = proto3
+ static readonly typeName = 'URLHash'
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: 'content', kind: 'scalar', T: 12 /* ScalarType.BYTES */ },
+ ])
+
+ static fromBinary(
+ bytes: Uint8Array,
+ options?: Partial
+ ): URLHash {
+ return new URLHash().fromBinary(bytes, options)
+ }
+
+ static fromJson(
+ jsonValue: JsonValue,
+ options?: Partial
+ ): URLHash {
+ return new URLHash().fromJson(jsonValue, options)
+ }
+
+ static fromJsonString(
+ jsonString: string,
+ options?: Partial
+ ): URLHash {
+ return new URLHash().fromJsonString(jsonString, options)
+ }
+
+ static equals(
+ a: URLHash | PlainMessage | undefined,
+ b: URLHash | PlainMessage | undefined
+ ): boolean {
+ return proto3.util.equals(URLHash, a, b)
+ }
+}
+
/**
* @generated from message URLParams
*/
diff --git a/packages/status-js/src/request-client/indices-to-tags.test.ts b/packages/status-js/src/request-client/indices-to-tags.test.ts
new file mode 100644
index 00000000..7472b69a
--- /dev/null
+++ b/packages/status-js/src/request-client/indices-to-tags.test.ts
@@ -0,0 +1,28 @@
+import { expect, test } from 'vitest'
+
+import { indicesToTags } from './indices-to-tags'
+
+test('should return tags for indices', () => {
+ expect(indicesToTags([1, 2, 3])).toEqual([
+ {
+ emoji: '🎨',
+ text: 'Art',
+ },
+ {
+ emoji: '🔗',
+ text: 'Blockchain',
+ },
+ {
+ emoji: '📚',
+ text: 'Books & blogs',
+ },
+ ])
+})
+
+test('should not return tags for no indices', () => {
+ expect(indicesToTags([])).toEqual([])
+})
+
+test('should not return tags for unknown indices', () => {
+ expect(indicesToTags([-1, 53])).toEqual([])
+})
diff --git a/packages/status-js/src/request-client/indices-to-tags.ts b/packages/status-js/src/request-client/indices-to-tags.ts
new file mode 100644
index 00000000..0516d24e
--- /dev/null
+++ b/packages/status-js/src/request-client/indices-to-tags.ts
@@ -0,0 +1,19 @@
+import { tags as tagsMap } from './tags'
+
+import type { Tag } from './map-community'
+
+export const indicesToTags = (indices: number[]) => {
+ const tagsMapByIndex = Object.entries(tagsMap)
+
+ return indices.reduce((tags, index) => {
+ const tag = tagsMapByIndex[index]
+
+ if (!tag) {
+ return tags
+ }
+
+ tags.push({ text: tag[0], emoji: tag[1] })
+
+ return tags
+ }, [])
+}
diff --git a/packages/status-js/src/request-client/map-community.ts b/packages/status-js/src/request-client/map-community.ts
index 21f66b36..bae39ab7 100644
--- a/packages/status-js/src/request-client/map-community.ts
+++ b/packages/status-js/src/request-client/map-community.ts
@@ -8,13 +8,15 @@ export type CommunityInfo = {
displayName: string
description: string
membersCount: number
- tags: Array<{
- emoji: string
- text: string
- }>
+ tags: Tag[]
color: string
}
+export type Tag = {
+ emoji: string
+ text: string
+}
+
export function mapCommunity(
communityDescription: CommunityDescription
): CommunityInfo | undefined {
@@ -30,7 +32,7 @@ export function mapCommunity(
displayName: identity.displayName,
description: identity.description,
membersCount: Object.keys(members).length,
- tags: tags.reduce((tags, nextTag) => {
+ tags: tags.reduce((tags, nextTag) => {
const emoji = tagsMap[nextTag as keyof typeof tagsMap]
if (!emoji) {
diff --git a/packages/status-js/src/request-client/map-user.ts b/packages/status-js/src/request-client/map-user.ts
index 5519aa9d..32c66313 100644
--- a/packages/status-js/src/request-client/map-user.ts
+++ b/packages/status-js/src/request-client/map-user.ts
@@ -1,3 +1,4 @@
+import { publicKeyToColorHash } from '../utils/public-key-to-color-hash'
import { publicKeyToEmojiHash } from '../utils/public-key-to-emoji-hash'
import type { ContactCodeAdvertisement } from '../protos/push-notifications_pb'
@@ -6,6 +7,7 @@ export type UserInfo = {
photo?: Uint8Array
displayName: string
description?: string
+ colorHash: number[][]
emojiHash: string
// todo: currently not in protobuf nor in product
// color: string
@@ -25,6 +27,7 @@ export function mapUser(
photo: identity.images.thumbnail?.payload,
displayName: identity.displayName,
description: identity.description,
+ colorHash: publicKeyToColorHash(userPublicKey),
emojiHash: publicKeyToEmojiHash(userPublicKey),
}
diff --git a/packages/status-js/src/request-client/request-client.ts b/packages/status-js/src/request-client/request-client.ts
index 93a6e2f2..cdebc83d 100644
--- a/packages/status-js/src/request-client/request-client.ts
+++ b/packages/status-js/src/request-client/request-client.ts
@@ -94,7 +94,7 @@ class RequestClient {
}
public fetchCommunity = async (
- /** Uncompressed */
+ /** Compressed */
publicKey: string
): Promise => {
const communityDescription = await this.fetchCommunityDescription(publicKey)
diff --git a/packages/status-js/src/utils/create-url.test.ts b/packages/status-js/src/utils/create-url.test.ts
index c48d78ff..5aa3e8c3 100644
--- a/packages/status-js/src/utils/create-url.test.ts
+++ b/packages/status-js/src/utils/create-url.test.ts
@@ -1,85 +1,165 @@
-import { describe, expect, test } from 'vitest'
+import { describe, expect, test, vi } from 'vitest'
import {
- createChannelURLWithPublicKey,
- createChannelURLWithSignature,
- createCommunityURLWithPublicKey,
- createCommunityURLWithSignature,
- createUserURLWithPublicKey,
- createUserURLWithSignature,
+ createChannelURLWithChatKey,
+ createChannelURLWithData,
+ createCommunityURLWithChatKey,
+ createCommunityURLWithData,
+ createUserURLWithChatKey,
+ createUserURLWithData,
+ createUserURLWithENS,
} from './create-url'
+import type { Account } from '../client/account'
+import type { Chat } from '../client/chat'
+import type { Community } from '../client/community/community'
+import type {
+ CommunityChat,
+ CommunityDescription,
+} from '../protos/communities_pb'
+import type { ContactCodeAdvertisement } from '../protos/push-notifications_pb'
+import type { Channel as ChannelProto } from '../protos/url_pb'
+import type { PlainMessage } from '@bufbuild/protobuf'
+
+/**
+ * @see https://github.com/microsoft/TypeScript/issues/24509
+ */
+type Mutable = {
+ -readonly [P in keyof T]: T[P]
+}
+
describe('Create URLs', () => {
- test('should create community URL', () => {
- expect(
- createCommunityURLWithPublicKey(
- 'zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU'
- ).toString()
- ).toBe(
- 'https://status.app/c#zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU'
+ test('should create community URL', async () => {
+ const community = vi.fn() as unknown as Mutable<
+ Community & { privateKey: string }
+ >
+ community.privateKey =
+ '87734578951189d843c7acd05b133a0e0d02c4110ea961df812f7ea15648e0d8'
+ community.chatKey = 'zQ3shYSHp7GoiXaauJMnDcjwU2yNjdzpXLosAWapPS4CFxc11'
+ community.description = {
+ members: {
+ '0x04b226ea6d3a96a6ef43106d773c730179d91f5a1d8d701ab40a8f576811fcc8de36df0b756938cc540cd24590a49791aec1489a1ba4af9a13ebdfbc7c3115283d':
+ {},
+ },
+ identity: {
+ description: 'Coloring the world with joy • ᴗ •',
+ displayName: 'Doodles',
+ color: '#131D2F',
+ },
+ tags: ['Art', 'NFT', 'Web3'],
+ } as unknown as CommunityDescription
+
+ expect(createCommunityURLWithChatKey(community.chatKey).toString()).toBe(
+ 'https://status.app/c#zQ3shYSHp7GoiXaauJMnDcjwU2yNjdzpXLosAWapPS4CFxc11'
)
expect(
- createCommunityURLWithSignature(
- 'G74AgK0ObFNmYT-WC_Jcc9KfSjHXAQo9THKEEbgPaJoItceMES-bUxr2Tj9efv447rRefBIUg9CEsSFyjBOFTRdZ9PH2wUOW8hVNYqIje3BC96mZ8uFogqM6k7gCCJnMHy4ulsmsgHTdeh5dAzTNNuG8m9XB8oVeildTCKlRhINnTZh4kAl5sP8SzBB4V2_I41a8PKl3mcS0z_eF5gA=',
- new Uint8Array([
- 94, 52, 162, 140, 177, 216, 189, 16, 47, 100, 230, 195, 33, 131, 3,
- 66, 86, 100, 186, 198, 234, 159, 193, 19, 133, 58, 232, 29, 52, 159,
- 5, 113, 2, 146, 158, 85, 67, 236, 96, 96, 219, 109, 146, 23, 0, 141,
- 1, 30, 20, 187, 181, 204, 82, 68, 22, 26, 208, 232, 206, 93, 52, 119,
- 148, 57, 0,
- ])
+ (
+ await createCommunityURLWithData(
+ {
+ description: community.description.identity!.description,
+ displayName: community.description.identity!.displayName,
+ color: community.description.identity!.color,
+ membersCount: 446_744,
+ tagIndices: [1, 33, 51],
+ },
+ community.privateKey
+ )
).toString()
).toBe(
- 'https://status.app/c/G74AgK0ObFNmYT-WC_Jcc9KfSjHXAQo9THKEEbgPaJoItceMES-bUxr2Tj9efv447rRefBIUg9CEsSFyjBOFTRdZ9PH2wUOW8hVNYqIje3BC96mZ8uFogqM6k7gCCJnMHy4ulsmsgHTdeh5dAzTNNuG8m9XB8oVeildTCKlRhINnTZh4kAl5sP8SzBB4V2_I41a8PKl3mcS0z_eF5gA=#XjSijLHYvRAvZObDIYMDQlZkusbqn8EThTroHTSfBXECkp5VQ-xgYNttkhcAjQEeFLu1zFJEFhrQ6M5dNHeUOQA='
+ 'https://status.app/c/iyKACkQKB0Rvb2RsZXMSJ0NvbG9yaW5nIHRoZSB3b3JsZCB3aXRoIGpveSDigKIg4bSXIOKAohiYohsiByMxMzFEMkYqAwEhMwM=#Co0BClhRbk8yaHc1dFZBRS1NRDVpOE1xNHNfb0dXZDByUkZtbE9iZ1JVTlFYdFVOd1AxaXhGdzkxNFk0LUJRcEYwOEtPcXBhVUxDaDdVQ3RsV1ItTzBZUDhNd0E9EjF6UTNzaFlTSHA3R29pWGFhdUpNbkRjandVMnlOamR6cFhMb3NBV2FwUFM0Q0Z4YzEx'
)
})
- test('should create channel URL', () => {
+ test('should create channel URL', async () => {
+ const community = vi.fn() as unknown as Community & { privateKey: string }
+ community.privateKey =
+ '87734578951189d843c7acd05b133a0e0d02c4110ea961df812f7ea15648e0d8'
+ community.chatKey = 'zQ3shYSHp7GoiXaauJMnDcjwU2yNjdzpXLosAWapPS4CFxc11'
+ community.description = {
+ members: {
+ '0x04b226ea6d3a96a6ef43106d773c730179d91f5a1d8d701ab40a8f576811fcc8de36df0b756938cc540cd24590a49791aec1489a1ba4af9a13ebdfbc7c3115283d':
+ {},
+ },
+ identity: {
+ description: 'Coloring the world with joy • ᴗ •',
+ displayName: 'Doodles',
+ color: '#131D2F',
+ },
+ tags: ['Art', 'NFT', 'Web3'],
+ } as unknown as CommunityDescription
+
+ const chat = vi.fn() as unknown as Mutable
+ chat.uuid = '003cdcd5-e065-48f9-b166-b1a94ac75a11'
+ chat.description = {
+ identity: {
+ description:
+ 'The quick brown fox jumped over the lazy dog because it was too lazy to go around.',
+ displayName: 'design',
+ emoji: '🍿',
+ color: '#131D2F',
+ },
+ } as unknown as CommunityChat
+
expect(
- createChannelURLWithPublicKey(
- '30804ea7-bd66-4d5d-91eb-b2dcfe2515b3',
- 'zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU'
- ).toString()
+ createChannelURLWithChatKey(chat.uuid, community.chatKey).toString()
).toBe(
- 'https://status.app/cc/30804ea7-bd66-4d5d-91eb-b2dcfe2515b3#zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU'
+ 'https://status.app/cc/003cdcd5-e065-48f9-b166-b1a94ac75a11#zQ3shYSHp7GoiXaauJMnDcjwU2yNjdzpXLosAWapPS4CFxc11'
)
expect(
- createChannelURLWithSignature(
- 'G70BYJwHdqxloHnQV-SSlY7OfdEB_f8igUIHtomMR1igUTaaRSFVBhJ-mjSn8BPqdBHk0PiHrEsBk8WBTo6_gK0tSiwQDLCWpwnmKeU2Bo7j005CuygCCwWebictMe-XLrHfyPEUmLllOKoRCBtcLDALSYQvF5NCoieM550vx-sAmlmSK871edYL67bCK-PPYghGByWEGNMFs9lOIoFx2H_mJDkNNs9bYsbbaRl_uoStzrokUn0u578yAg16mYwLh-287482y4Ibg9640rAW9JNkrfwstJ2qbLLXJ2CYUOa5ftZlFZk2TnzTxIGvfdznZLVXePelos5rWwI=',
- new Uint8Array([
- 94, 52, 162, 140, 177, 216, 189, 16, 47, 100, 230, 195, 33, 131, 3,
- 66, 86, 100, 186, 198, 234, 159, 193, 19, 133, 58, 232, 29, 52, 159,
- 5, 113, 2, 146, 158, 85, 67, 236, 96, 96, 219, 109, 146, 23, 0, 141,
- 1, 30, 20, 187, 181, 204, 82, 68, 22, 26, 208, 232, 206, 93, 52, 119,
- 148, 57, 0,
- ])
+ (
+ await createChannelURLWithData(
+ {
+ description: chat.description.identity!.description,
+ displayName: chat.description.identity!.displayName,
+ emoji: chat.description.identity!.emoji,
+ color: chat.description.identity!.color,
+ uuid: chat.uuid,
+ community: {
+ displayName: community.description.identity!.displayName,
+ },
+ } as unknown as PlainMessage,
+ community.privateKey
+ )
).toString()
).toBe(
- 'https://status.app/cc/G70BYJwHdqxloHnQV-SSlY7OfdEB_f8igUIHtomMR1igUTaaRSFVBhJ-mjSn8BPqdBHk0PiHrEsBk8WBTo6_gK0tSiwQDLCWpwnmKeU2Bo7j005CuygCCwWebictMe-XLrHfyPEUmLllOKoRCBtcLDALSYQvF5NCoieM550vx-sAmlmSK871edYL67bCK-PPYghGByWEGNMFs9lOIoFx2H_mJDkNNs9bYsbbaRl_uoStzrokUn0u578yAg16mYwLh-287482y4Ibg9640rAW9JNkrfwstJ2qbLLXJ2CYUOa5ftZlFZk2TnzTxIGvfdznZLVXePelos5rWwI=#XjSijLHYvRAvZObDIYMDQlZkusbqn8EThTroHTSfBXECkp5VQ-xgYNttkhcAjQEeFLu1zFJEFhrQ6M5dNHeUOQA='
+ 'https://status.app/cc/G54AAKwObLdpiGjXnckYzRcOSq0QQAS_CURGfqVU42ceGHCObstUIknTTZDOKF3E8y2MSicncpO7fTskXnoACiPKeejvjtLTGWNxUhlT7fyQS7Jrr33UVHluxv_PLjV2ePGw5GQ33innzeK34pInIgUGs5RjdQifMVmURalxxQKwiuoY5zwIjixWWRHqjHM=#Co0BClg3YWVCLU02cElidnBTVkdNNFRlSmtLV1B5YTRZUkFIYnE0YW1MMGNIbFNCcFJLbjdfbHlSNGt4RURvMmhDNGtvcVBXWWVfYWsyUjljU1ZLU2lWX25OQUE9EjF6UTNzaFlTSHA3R29pWGFhdUpNbkRjandVMnlOamR6cFhMb3NBV2FwUFM0Q0Z4YzEx'
)
})
- test('should create user URL', () => {
- expect(
- createUserURLWithPublicKey(
- 'zQ3shUHp2rAM1yqBYeo6LhFbtrozG5mZeA6cRoGohsudtsieT'
- ).toString()
- ).toBe(
- 'https://status.app/u#zQ3shUHp2rAM1yqBYeo6LhFbtrozG5mZeA6cRoGohsudtsieT'
+ test('should create user URL', async () => {
+ const account = vi.fn() as unknown as Mutable
+ account.ensName = 'testing.stateofus.eth'
+ account.privateKey =
+ 'e922443102af10422970269a8bc575cbdfd70487e4d9051f4b091edd8def5254'
+ account.chatKey = 'zQ3shwQPhRuDJSjVGVBnTjCdgXy5i9WQaeVPdGJD6yTarJQSj'
+ account.description = {
+ chatIdentity: {
+ description:
+ 'Visual designer @Status, cat lover, pizza enthusiast, yoga afficionada',
+ displayName: 'Mark Cole',
+ color: '#BA434D',
+ },
+ } as unknown as ContactCodeAdvertisement
+
+ expect(createUserURLWithENS(account.ensName).toString()).toBe(
+ 'https://status.app/u#testing.stateofus.eth'
+ )
+ expect(createUserURLWithChatKey(account.chatKey).toString()).toBe(
+ 'https://status.app/u#zQ3shwQPhRuDJSjVGVBnTjCdgXy5i9WQaeVPdGJD6yTarJQSj'
)
expect(
- createUserURLWithSignature(
- 'GxgBoJwHdsOLl4DWt55mGELN6clGsb1UKTEkT0KUMDfwhWFpUyWH_cefTnvlcSf2JUXCOAWoY5ywzry-LnJ-PjgOGT1Pkb8riQp7ghv6Zu-x70x4m8lncZaRWpDN-sEfT85idUCWvppT_QFNa2A6J3Gr69UJGvWmL3S4DBwX2Jr7LBTNOvFPo6lejNUb-xizlAMUTrokunCH-qNmgtU6UK0J6Vkn8Ce35XGBFObxpxnAtnC_J_D-SrBCBnjiUlwH0ViNr3lHBg==',
- new Uint8Array([
- 96, 175, 248, 14, 248, 9, 32, 79, 13, 43, 138, 182, 215, 25, 138, 187,
- 188, 246, 133, 199, 190, 112, 234, 162, 99, 181, 248, 13, 136, 66, 65,
- 37, 106, 108, 229, 159, 10, 69, 241, 50, 134, 122, 138, 171, 62, 252,
- 197, 77, 125, 77, 161, 58, 114, 26, 200, 93, 51, 255, 113, 127, 132,
- 154, 145, 164, 1,
- ])
+ (
+ await createUserURLWithData(
+ {
+ description: account.description.chatIdentity!.description,
+ displayName: account.description.chatIdentity!.displayName,
+ color: account.description.chatIdentity!.color,
+ },
+ account.privateKey
+ )
).toString()
).toBe(
- 'https://status.app/u/GxgBoJwHdsOLl4DWt55mGELN6clGsb1UKTEkT0KUMDfwhWFpUyWH_cefTnvlcSf2JUXCOAWoY5ywzry-LnJ-PjgOGT1Pkb8riQp7ghv6Zu-x70x4m8lncZaRWpDN-sEfT85idUCWvppT_QFNa2A6J3Gr69UJGvWmL3S4DBwX2Jr7LBTNOvFPo6lejNUb-xizlAMUTrokunCH-qNmgtU6UK0J6Vkn8Ce35XGBFObxpxnAtnC_J_D-SrBCBnjiUlwH0ViNr3lHBg==#YK_4DvgJIE8NK4q21xmKu7z2hce-cOqiY7X4DYhCQSVqbOWfCkXxMoZ6iqs-_MVNfU2hOnIayF0z_3F_hJqRpAE='
+ 'https://status.app/u/G10A4B0JdgwyRww90WXtnP1oNH1ZLQNM0yX0Ja9YyAMjrqSZIYINOHCbFhrnKRAcPGStPxCMJDSZlGCKzmZrJcimHY8BbcXlORrElv_BbQEegnMDPx1g9C5VVNl0fE4y#Co0BClhMYlFVZEpESENLb2k4RHpvWXlYODlicEtyVGpWVjNTaHFIM0U2NGJEaWZKQjJHa2VkdExCZlZLQTAyUmJVZlgwNzRwYjlpM293R3dSZFM2eF9udHhyUUE9EjF6UTNzaHdRUGhSdURKU2pWR1ZCblRqQ2RnWHk1aTlXUWFlVlBkR0pENnlUYXJKUVNq'
)
})
})
diff --git a/packages/status-js/src/utils/create-url.ts b/packages/status-js/src/utils/create-url.ts
index aee220dc..9dfa6412 100644
--- a/packages/status-js/src/utils/create-url.ts
+++ b/packages/status-js/src/utils/create-url.ts
@@ -1,45 +1,75 @@
-import { base64url } from '@scure/base'
+import {
+ encodeChannelURLData,
+ encodeCommunityURLData,
+ encodeUserURLData,
+} from './encode-url-data'
+import { signEncodedURLData } from './sign-url-data'
+
+import type { Channel, Community, User } from '../protos/url_pb'
+import type { PlainMessage } from '@bufbuild/protobuf'
const BASE_URL = 'https://status.app'
-export function createCommunityURLWithPublicKey(publicKey: string): URL {
- return new URL(`${BASE_URL}/c#${publicKey}`)
+export function createCommunityURLWithChatKey(chatKey: string): URL {
+ return new URL(`${BASE_URL}/c#${chatKey}`)
}
-export function createCommunityURLWithSignature(
- encodedCommunityURLData: string,
- signature: Uint8Array
-): URL {
+export async function createCommunityURLWithData(
+ communityData: PlainMessage,
+ communityPrivateKey: Uint8Array | string
+): Promise {
+ const encodedURLData = encodeCommunityURLData(communityData)
+ const encodedVerificationURLHash = await signEncodedURLData(
+ encodedURLData,
+ communityPrivateKey
+ )
+
return new URL(
- `${BASE_URL}/c/${encodedCommunityURLData}#${base64url.encode(signature)}`
+ `${BASE_URL}/c/${encodedURLData}#${encodedVerificationURLHash}`
)
}
-export function createChannelURLWithPublicKey(
+export function createChannelURLWithChatKey(
channelUuid: string,
- communityPublicKey: string
+ communityChatKey: string
): URL {
- return new URL(`${BASE_URL}/cc/${channelUuid}#${communityPublicKey}`)
+ return new URL(`${BASE_URL}/cc/${channelUuid}#${communityChatKey}`)
}
-export function createChannelURLWithSignature(
- encodedChannelURLData: string,
- signature: Uint8Array
-): URL {
+export async function createChannelURLWithData(
+ channelData: PlainMessage,
+ communityPrivateKey: Uint8Array | string
+): Promise {
+ const encodedURLData = encodeChannelURLData(channelData)
+ const encodedVerificationURLHash = await signEncodedURLData(
+ encodedURLData,
+ communityPrivateKey
+ )
+
return new URL(
- `${BASE_URL}/cc/${encodedChannelURLData}#${base64url.encode(signature)}`
+ `${BASE_URL}/cc/${encodedURLData}#${encodedVerificationURLHash}`
)
}
-export function createUserURLWithPublicKey(publicKey: string): URL {
- return new URL(`${BASE_URL}/u#${publicKey}`)
+export function createUserURLWithENS(ensName: string): URL {
+ return new URL(`${BASE_URL}/u#${ensName}`)
}
-export function createUserURLWithSignature(
- encodedURLData: string,
- signature: Uint8Array
-): URL {
+export function createUserURLWithChatKey(chatKey: string): URL {
+ return new URL(`${BASE_URL}/u#${chatKey}`)
+}
+
+export async function createUserURLWithData(
+ userData: PlainMessage,
+ userPrivateKey: Uint8Array | string
+): Promise {
+ const encodedURLData = encodeUserURLData(userData)
+ const encodedVerificationURLHash = await signEncodedURLData(
+ encodedURLData,
+ userPrivateKey
+ )
+
return new URL(
- `${BASE_URL}/u/${encodedURLData}#${base64url.encode(signature)}`
+ `${BASE_URL}/u/${encodedURLData}#${encodedVerificationURLHash}`
)
}
diff --git a/packages/status-js/src/utils/encode-url-data.test.ts b/packages/status-js/src/utils/encode-url-data.test.ts
index 7cb82861..ba4a460d 100644
--- a/packages/status-js/src/utils/encode-url-data.test.ts
+++ b/packages/status-js/src/utils/encode-url-data.test.ts
@@ -9,7 +9,7 @@ import {
encodeUserURLData,
} from './encode-url-data'
-import type { Channel } from '../protos/url-data_pb'
+import type { Channel } from '../protos/url_pb'
import type { PlainMessage } from '@bufbuild/protobuf'
describe('Encode URL data', () => {
diff --git a/packages/status-js/src/utils/encode-url-data.ts b/packages/status-js/src/utils/encode-url-data.ts
index f173ac48..556fde2d 100644
--- a/packages/status-js/src/utils/encode-url-data.ts
+++ b/packages/status-js/src/utils/encode-url-data.ts
@@ -1,7 +1,7 @@
import { base64url } from '@scure/base'
import { brotliCompressSync, brotliDecompressSync } from 'zlib'
-import { Channel, Community, URLData, User } from '../protos/url-data_pb'
+import { Channel, Community, URLData, User } from '../protos/url_pb'
import type { PlainMessage } from '@bufbuild/protobuf'
diff --git a/packages/status-js/src/utils/encode-url-hash.test.ts b/packages/status-js/src/utils/encode-url-hash.test.ts
new file mode 100644
index 00000000..8f32538d
--- /dev/null
+++ b/packages/status-js/src/utils/encode-url-hash.test.ts
@@ -0,0 +1,24 @@
+import { describe, expect, test } from 'vitest'
+
+import {
+ decodeVerificationURLHash,
+ encodeVerificationURLHash,
+} from './encode-url-hash'
+
+describe('Encode URL hash', () => {
+ test('should encode and decode verification hash', () => {
+ const data = {
+ signature:
+ 'k-n7d-9Pcx6ht87F4riP5xAw1v7S-e1HGMRaeaO068Q3IF1Jo8xOyeMT9Yr3Wv349Z2CdBzylw8M83CgQhcMogA=', // not generated by the pk
+ publicKey: 'zQ3shUHp2rAM1yqBYeo6LhFbtrozG5mZeA6cRoGohsudtsieT',
+ }
+
+ const encodedHash = encodeVerificationURLHash(data)
+ const decodedHash = decodeVerificationURLHash(encodedHash)
+
+ expect(encodedHash).toBe(
+ 'Co0BClhrLW43ZC05UGN4Nmh0ODdGNHJpUDV4QXcxdjdTLWUxSEdNUmFlYU8wNjhRM0lGMUpvOHhPeWVNVDlZcjNXdjM0OVoyQ2RCenlsdzhNODNDZ1FoY01vZ0E9EjF6UTNzaFVIcDJyQU0xeXFCWWVvNkxoRmJ0cm96RzVtWmVBNmNSb0dvaHN1ZHRzaWVU'
+ )
+ expect(decodedHash).toEqual(data)
+ })
+})
diff --git a/packages/status-js/src/utils/encode-url-hash.ts b/packages/status-js/src/utils/encode-url-hash.ts
new file mode 100644
index 00000000..99d3468d
--- /dev/null
+++ b/packages/status-js/src/utils/encode-url-hash.ts
@@ -0,0 +1,41 @@
+import { base64url } from '@scure/base'
+
+import { URLHash, Verification } from '../protos/url_pb'
+
+import type { PlainMessage } from '@bufbuild/protobuf'
+
+export type EncodedVerificationURLHash = string & {
+ _: 'EncodedVerificationURLHash'
+}
+
+export function encodeVerificationURLHash(
+ data: PlainMessage
+): EncodedVerificationURLHash {
+ return encodeURLHash(
+ new Verification(data).toBinary()
+ ) as EncodedVerificationURLHash
+}
+
+export function decodeVerificationURLHash(
+ data: string
+): PlainMessage {
+ const deserialized = decodeURLHash(data)
+
+ return Verification.fromBinary(
+ deserialized.content
+ ).toJson() as PlainMessage
+}
+
+function encodeURLHash(data: Uint8Array): string {
+ const serialized = new URLHash({ content: data }).toBinary()
+ const encoded = base64url.encode(serialized)
+
+ return encoded
+}
+
+function decodeURLHash(data: string): URLHash {
+ const decoded = base64url.decode(data)
+ const deserialized = URLHash.fromBinary(decoded)
+
+ return deserialized
+}
diff --git a/packages/status-js/src/utils/serialize-public-key.test.ts b/packages/status-js/src/utils/serialize-public-key.test.ts
new file mode 100644
index 00000000..b07963e1
--- /dev/null
+++ b/packages/status-js/src/utils/serialize-public-key.test.ts
@@ -0,0 +1,39 @@
+import { expect, test } from 'vitest'
+
+import { serializePublicKey } from './serialize-public-key'
+
+test('should serialize compressed public key to base58btc encoding', () => {
+ expect(
+ serializePublicKey(
+ '0x029f196bbfef4fa6a5eb81dd802133a63498325445ca1af1d154b1bb4542955133'
+ )
+ ).toEqual('zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU')
+})
+
+test('should serialize uncompressed public key to base58btc encoding', () => {
+ expect(
+ serializePublicKey(
+ '0x049f196bbfef4fa6a5eb81dd802133a63498325445ca1af1d154b1bb454295513305b23fcf11d005ee622144fc402b713a8928f80d705781e2e78d701c6e01bfc4'
+ )
+ ).toEqual('zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU')
+})
+
+test('should return the public key if already serialized to base58btc encoding', () => {
+ expect(
+ serializePublicKey('zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU')
+ ).toEqual('zQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU')
+})
+
+test('should throw when serializing unsupported multibase encoding', () => {
+ expect(() =>
+ serializePublicKey('ZQ3shY7r4cAdg4eUF5dfcuCqCFzWmdjHW4SX5hspM9ucAarfU')
+ ).toThrowError()
+})
+
+test('should throw when serializing invalid public key', () => {
+ expect(() =>
+ serializePublicKey(
+ '0x019f196bbfef4fa6a5eb81dd802133a63498325445ca1af1d154b1bb4542955133'
+ )
+ ).toThrowError()
+})
diff --git a/packages/status-js/src/utils/serialize-public-key.ts b/packages/status-js/src/utils/serialize-public-key.ts
new file mode 100644
index 00000000..38003c93
--- /dev/null
+++ b/packages/status-js/src/utils/serialize-public-key.ts
@@ -0,0 +1,17 @@
+import { hexToBytes } from 'ethereum-cryptography/utils'
+import { base58btc } from 'multiformats/bases/base58'
+
+import { deserializePublicKey } from './deserialize-public-key'
+
+/**
+ * @see https://specs.status.im/spec/2#public-key-serialization for specification
+ */
+export function serializePublicKey(
+ publicKey: string // uncompressed, compressed, or compressed & encoded
+): string {
+ const hexadecimalPublicKey = hexToBytes(
+ deserializePublicKey(publicKey).replace(/^0[xX]/, '')
+ ) // validated and compressed
+
+ return base58btc.encode(new Uint8Array([231, 1, ...hexadecimalPublicKey]))
+}
diff --git a/packages/status-js/src/utils/sign-url-data.test.ts b/packages/status-js/src/utils/sign-url-data.test.ts
index 837e745f..5292b95c 100644
--- a/packages/status-js/src/utils/sign-url-data.test.ts
+++ b/packages/status-js/src/utils/sign-url-data.test.ts
@@ -1,5 +1,6 @@
import { expect, test } from 'vitest'
+import { encodeVerificationURLHash } from './encode-url-hash'
import { signEncodedURLData, verifyEncodedURLData } from './sign-url-data'
import type { EncodedURLData } from './encode-url-data'
@@ -8,24 +9,54 @@ const privateKey = new Uint8Array([
233, 34, 68, 49, 2, 175, 16, 66, 41, 112, 38, 154, 139, 197, 117, 203, 223,
215, 4, 135, 228, 217, 5, 31, 75, 9, 30, 221, 141, 239, 82, 84,
])
-
+const publicKey =
+ '0x04f9134866f2bd8f45f2bc7893c95a6b989378c370088c9a1a5a53eda2ebb8a1e8386921592b6bd56fc3573f03c46df3396cc42e2993cdc001855c858865d768a7'
const encodedURLData =
'G74AgK0ObFNmYT-WC_Jcc9KfSjHXAQo9THKEEbgPaJoItceMES-bUxr2Tj9efv447rRefBIUg9CEsSFyjBOFTRdZ9PH2wUOW8hVNYqIje3BC96mZ8uFogqM6k7gCCJnMHy4ulsmsgHTdeh5dAzTNNuG8m9XB8oVeildTCKlRhINnTZh4kAl5sP8SzBB4V2_I41a8PKl3mcS0z_eF5gA=' as EncodedURLData
-test('should sign and verify URL data', async () => {
- const signature = await signEncodedURLData(encodedURLData, privateKey)
-
- expect(signature).toBe(
- 'k-n7d-9Pcx6ht87F4riP5xAw1v7S-e1HGMRaeaO068Q3IF1Jo8xOyeMT9Yr3Wv349Z2CdBzylw8M83CgQhcMogA='
+test('should verify URL data and correspoinding signature', async () => {
+ const encodedVerificationURLHash = await signEncodedURLData(
+ encodedURLData,
+ privateKey
+ )
+
+ expect(verifyEncodedURLData(encodedURLData, encodedVerificationURLHash)).toBe(
+ true
)
- expect(verifyEncodedURLData(signature, encodedURLData)).toBe(true)
})
-test.todo('should not verify URL data', async () => {
- const signatureForAnotherContent =
+test('should not verify URL data and random signature', async () => {
+ const randomSignature =
'OyOgY6Zta8S7U4l5Bv_9E_7snALhixwvjxORVAVJ-YJk-tMSGgstOy5XEEQx25TQJIAtpWf8eHnEmV8V-GmouQA='
- expect(verifyEncodedURLData(signatureForAnotherContent, encodedURLData)).toBe(
+ const encodedVerificationURLHash = encodeVerificationURLHash({
+ signature: randomSignature,
+ publicKey,
+ })
+
+ expect(verifyEncodedURLData(encodedURLData, encodedVerificationURLHash)).toBe(
false
)
+ // see https://github.com/paulmillr/noble-secp256k1/issues/43#issuecomment-1020214968
+ // expect(verifyEncodedURLData(randomSignature, encodedURLData)).toBe(false)
+})
+
+test('should not verify random URL data and random signature', async () => {
+ const randomEncodedURLData =
+ 'CyeACk0KHkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBlZ2VzdGFzLhIYV2UgZG8gbm90IHN1cHBvcnQgQWxpY2UuGMCEPSIHIzQzNjBERioEAQIDBAM=' as EncodedURLData
+ const randomSignature =
+ 'k-n7d-9Pcx6ht87F4riP5xAw1v7S-e1HGMRaeaO068Q3IF1Jo8xOyeMT9Yr3Wv349Z2CdBzylw8M83CgQhcMogA='
+
+ const encodedVerificationURLHash = encodeVerificationURLHash({
+ signature: randomSignature,
+ publicKey,
+ })
+
+ expect(
+ verifyEncodedURLData(randomEncodedURLData, encodedVerificationURLHash)
+ ).toBe(false)
+ // see https://github.com/paulmillr/noble-secp256k1/issues/43#issuecomment-1020214968
+ // expect(verifyEncodedURLData(randomSignature, randomEncodedURLData)).toBe(
+ // false
+ // )
})
diff --git a/packages/status-js/src/utils/sign-url-data.ts b/packages/status-js/src/utils/sign-url-data.ts
index 6fea248a..4d92abfc 100644
--- a/packages/status-js/src/utils/sign-url-data.ts
+++ b/packages/status-js/src/utils/sign-url-data.ts
@@ -1,23 +1,51 @@
import { base64url } from '@scure/base'
+import { getPublicKey } from 'ethereum-cryptography/secp256k1'
+import { bytesToHex } from 'ethereum-cryptography/utils'
+import { deserializePublicKey } from './deserialize-public-key'
+import {
+ decodeVerificationURLHash,
+ encodeVerificationURLHash,
+} from './encode-url-hash'
+import { serializePublicKey } from './serialize-public-key'
import { signData, verifySignedData } from './sign-data'
import type { EncodedURLData } from './encode-url-data'
+import type { EncodedVerificationURLHash } from './encode-url-hash'
export async function signEncodedURLData(
encodedURLData: EncodedURLData,
privateKey: Uint8Array | string
-): Promise {
+): Promise {
const signature = await signData(encodedURLData, privateKey)
- return base64url.encode(signature)
+ const encodedSignature = base64url.encode(signature)
+ const serializedPublicKey = serializePublicKey(
+ `0x${bytesToHex(getPublicKey(privateKey))}`
+ )
+
+ return encodeVerificationURLHash({
+ signature: encodedSignature,
+ publicKey: serializedPublicKey,
+ })
}
export function verifyEncodedURLData(
- encodedSignature: string,
- encodedURLData: EncodedURLData
+ encodedURLData: string,
+ encodedVerificationURLHash: string
): boolean {
- const signature = base64url.decode(encodedSignature)
+ const { signature, publicKey } = decodeVerificationURLHash(
+ encodedVerificationURLHash
+ )
- return verifySignedData(signature, encodedURLData)
+ const decodedSignature = base64url.decode(signature)
+ const deserializedPublicKey = deserializePublicKey(publicKey, {
+ compress: false,
+ })
+
+ return verifySignedData(
+ decodedSignature,
+ encodedURLData,
+ deserializedPublicKey
+ )
}
diff --git a/packages/status-js/vite.config.ts b/packages/status-js/vite.config.ts
index 56babaa4..ca0b8d09 100644
--- a/packages/status-js/vite.config.ts
+++ b/packages/status-js/vite.config.ts
@@ -26,9 +26,24 @@ export default defineConfig(({ mode }) => {
build: {
target: 'es2020',
lib: {
- entry: './src/index.ts',
- fileName: 'index',
- formats: ['es', 'cjs'],
+ entry: [
+ './src/index.ts',
+ './src/utils/encode-url-data.ts',
+ './src/utils/encode-url-hash.ts',
+ ],
+ fileName: (format, entryName) => {
+ if (!['es'].includes(format)) {
+ throw new Error(`Unexpected format: ${format}`)
+ }
+
+ switch (format) {
+ case 'es':
+ return `${entryName}.js`
+ default:
+ throw new Error(`Undefined format: ${format}`)
+ }
+ },
+ formats: ['es'],
},
sourcemap: true,
emptyOutDir: mode === 'production',
diff --git a/yarn.lock b/yarn.lock
index 26883867..181f973a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,11 @@
# yarn lockfile v1
+"@0no-co/graphql.web@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@0no-co/graphql.web/-/graphql.web-1.0.1.tgz#db3da0d2cd41548b50f0583c0d2f4743c767e56b"
+ integrity sha512-6Yaxyv6rOwRkLIvFaL0NrLDgfNqC/Ng9QOPmTmlqW4mORXMEKmh5NYGkIvvt5Yw8fZesnMAqkj8cIqTj8f40cQ==
+
"@achingbrain/ip-address@^8.1.0":
version "8.1.0"
resolved "https://registry.yarnpkg.com/@achingbrain/ip-address/-/ip-address-8.1.0.tgz#24f2e9cd7289e33f433d771b23bea56cfd0242c9"
@@ -93,7 +98,12 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f"
integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==
-"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.17.9", "@babel/core@^7.19.6", "@babel/core@^7.20.2", "@babel/core@^7.7.5":
+"@babel/compat-data@^7.21.5":
+ version "7.21.7"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc"
+ integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==
+
+"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.19.6", "@babel/core@^7.20.2", "@babel/core@^7.7.5":
version "7.20.12"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d"
integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==
@@ -114,6 +124,27 @@
json5 "^2.2.2"
semver "^6.3.0"
+"@babel/core@^7.14.0", "@babel/core@^7.17.9":
+ version "7.21.8"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4"
+ integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.21.4"
+ "@babel/generator" "^7.21.5"
+ "@babel/helper-compilation-targets" "^7.21.5"
+ "@babel/helper-module-transforms" "^7.21.5"
+ "@babel/helpers" "^7.21.5"
+ "@babel/parser" "^7.21.8"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.5"
+ "@babel/types" "^7.21.5"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.2"
+ semver "^6.3.0"
+
"@babel/core@^7.20.12":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13"
@@ -156,7 +187,7 @@
json5 "^2.2.2"
semver "^6.3.0"
-"@babel/generator@^7.12.11", "@babel/generator@^7.14.0", "@babel/generator@^7.19.6", "@babel/generator@^7.20.7":
+"@babel/generator@^7.12.11", "@babel/generator@^7.19.6", "@babel/generator@^7.20.7":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a"
integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==
@@ -165,6 +196,16 @@
"@jridgewell/gen-mapping" "^0.3.2"
jsesc "^2.5.1"
+"@babel/generator@^7.14.0", "@babel/generator@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f"
+ integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==
+ dependencies:
+ "@babel/types" "^7.21.5"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
"@babel/generator@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9"
@@ -231,6 +272,17 @@
lru-cache "^5.1.1"
semver "^6.3.0"
+"@babel/helper-compilation-targets@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366"
+ integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==
+ dependencies:
+ "@babel/compat-data" "^7.21.5"
+ "@babel/helper-validator-option" "^7.21.0"
+ browserslist "^4.21.3"
+ lru-cache "^5.1.1"
+ semver "^6.3.0"
+
"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7":
version "7.20.12"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819"
@@ -289,6 +341,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
+"@babel/helper-environment-visitor@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba"
+ integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==
+
"@babel/helper-explode-assignable-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096"
@@ -348,6 +405,13 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-module-imports@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af"
+ integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
+ dependencies:
+ "@babel/types" "^7.21.4"
+
"@babel/helper-module-transforms@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8"
@@ -390,6 +454,20 @@
"@babel/traverse" "^7.21.2"
"@babel/types" "^7.21.2"
+"@babel/helper-module-transforms@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420"
+ integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.21.5"
+ "@babel/helper-module-imports" "^7.21.4"
+ "@babel/helper-simple-access" "^7.21.5"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.5"
+ "@babel/types" "^7.21.5"
+
"@babel/helper-optimise-call-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
@@ -407,6 +485,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
+"@babel/helper-plugin-utils@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56"
+ integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==
+
"@babel/helper-remap-async-to-generator@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519"
@@ -443,6 +526,13 @@
dependencies:
"@babel/types" "^7.20.2"
+"@babel/helper-simple-access@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee"
+ integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==
+ dependencies:
+ "@babel/types" "^7.21.5"
+
"@babel/helper-skip-transparent-expression-wrappers@^7.20.0":
version "7.20.0"
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684"
@@ -462,6 +552,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+"@babel/helper-string-parser@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd"
+ integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==
+
"@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"
@@ -510,6 +605,15 @@
"@babel/traverse" "^7.21.0"
"@babel/types" "^7.21.0"
+"@babel/helpers@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08"
+ integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==
+ dependencies:
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.5"
+ "@babel/types" "^7.21.5"
+
"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
@@ -528,11 +632,16 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.19.6", "@babel/parser@^7.20.7":
+"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.19.6", "@babel/parser@^7.20.7":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
+"@babel/parser@^7.14.0", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8":
+ version "7.21.8"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8"
+ integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==
+
"@babel/parser@^7.18.10":
version "7.19.4"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc"
@@ -606,15 +715,15 @@
"@babel/plugin-syntax-class-static-block" "^7.14.5"
"@babel/plugin-proposal-decorators@^7.12.9":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz#05d37453c2ce818f3e47bbeda9468c8de947eecc"
- integrity sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz#70e0c89fdcd7465c97593edb8f628ba6e4199d63"
+ integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.20.7"
+ "@babel/helper-create-class-features-plugin" "^7.21.0"
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/helper-replace-supers" "^7.20.7"
"@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/plugin-syntax-decorators" "^7.19.0"
+ "@babel/plugin-syntax-decorators" "^7.21.0"
"@babel/plugin-proposal-dynamic-import@^7.18.6":
version "7.18.6"
@@ -691,19 +800,19 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55"
- integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==
+"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea"
+ integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
-"@babel/plugin-proposal-optional-chaining@^7.21.0":
- version "7.21.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea"
- integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
+"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55"
+ integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
@@ -766,12 +875,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599"
- integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==
+"@babel/plugin-syntax-decorators@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz#d2b3f31c3e86fa86e16bb540b7660c55bd7d0e78"
+ integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==
dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
@@ -794,7 +903,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.2.0":
+"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz#3e37fca4f06d93567c1cd9b75156422e90a67107"
+ integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-syntax-flow@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1"
integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==
@@ -808,6 +924,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.19.0"
+"@babel/plugin-syntax-import-meta@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
"@babel/plugin-syntax-json-strings@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
@@ -815,7 +938,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.18.6":
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2"
+ integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-syntax-jsx@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
@@ -885,7 +1015,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.19.0"
-"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.20.7":
+"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929"
+ integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.21.5"
+
+"@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.20.7":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551"
integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==
@@ -908,36 +1045,21 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.20.2":
- version "7.20.11"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a"
- integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.20.2"
-
-"@babel/plugin-transform-block-scoping@^7.21.0":
+"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.21.0":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02"
integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.20.2":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073"
- integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==
+"@babel/plugin-transform-block-scoping@^7.20.2":
+ version "7.20.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a"
+ integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-compilation-targets" "^7.20.7"
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.19.0"
- "@babel/helper-optimise-call-expression" "^7.18.6"
"@babel/helper-plugin-utils" "^7.20.2"
- "@babel/helper-replace-supers" "^7.20.7"
- "@babel/helper-split-export-declaration" "^7.18.6"
- globals "^11.1.0"
-"@babel/plugin-transform-classes@^7.21.0":
+"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.21.0":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665"
integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==
@@ -952,7 +1074,30 @@
"@babel/helper-split-export-declaration" "^7.18.6"
globals "^11.1.0"
-"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.18.9", "@babel/plugin-transform-computed-properties@^7.20.7":
+"@babel/plugin-transform-classes@^7.20.2":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073"
+ integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-compilation-targets" "^7.20.7"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-optimise-call-expression" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-replace-supers" "^7.20.7"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44"
+ integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.21.5"
+ "@babel/template" "^7.20.7"
+
+"@babel/plugin-transform-computed-properties@^7.18.9", "@babel/plugin-transform-computed-properties@^7.20.7":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa"
integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==
@@ -960,20 +1105,20 @@
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/template" "^7.20.7"
-"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.2":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454"
- integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.20.2"
-
-"@babel/plugin-transform-destructuring@^7.21.3":
+"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.21.3":
version "7.21.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401"
integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
+"@babel/plugin-transform-destructuring@^7.20.2":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454"
+ integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8"
@@ -997,7 +1142,15 @@
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.18.6":
+"@babel/plugin-transform-flow-strip-types@^7.0.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5"
+ integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-flow" "^7.18.6"
+
+"@babel/plugin-transform-flow-strip-types@^7.18.6":
version "7.19.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f"
integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==
@@ -1005,7 +1158,14 @@
"@babel/helper-plugin-utils" "^7.19.0"
"@babel/plugin-syntax-flow" "^7.18.6"
-"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.18.8":
+"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc"
+ integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.21.5"
+
+"@babel/plugin-transform-for-of@^7.18.8":
version "7.18.8"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1"
integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==
@@ -1050,7 +1210,16 @@
"@babel/helper-module-transforms" "^7.20.11"
"@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6":
+"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc"
+ integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.21.5"
+ "@babel/helper-plugin-utils" "^7.21.5"
+ "@babel/helper-simple-access" "^7.21.5"
+
+"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6":
version "7.20.11"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607"
integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==
@@ -1109,20 +1278,20 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/helper-replace-supers" "^7.18.6"
-"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f"
- integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.20.2"
-
-"@babel/plugin-transform-parameters@^7.21.3":
+"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.21.3":
version "7.21.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db"
integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
+"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f"
+ integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3"
@@ -1144,7 +1313,14 @@
dependencies:
"@babel/plugin-transform-react-jsx" "^7.18.6"
-"@babel/plugin-transform-react-jsx-self@^7.0.0", "@babel/plugin-transform-react-jsx-self@^7.18.6":
+"@babel/plugin-transform-react-jsx-self@^7.0.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54"
+ integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-transform-react-jsx-self@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7"
integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==
@@ -1158,16 +1334,16 @@
dependencies:
"@babel/helper-plugin-utils" "^7.19.0"
-"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.19.0":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz#025d85a1935fd7e19dfdcb1b1d4df34d4da484f7"
- integrity sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==
+"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.12.17":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz#bd98f3b429688243e4fa131fe1cbb2ef31ce6f38"
+ integrity sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.20.2"
- "@babel/plugin-syntax-jsx" "^7.18.6"
- "@babel/types" "^7.20.7"
+ "@babel/helper-module-imports" "^7.21.4"
+ "@babel/helper-plugin-utils" "^7.21.5"
+ "@babel/plugin-syntax-jsx" "^7.21.4"
+ "@babel/types" "^7.21.5"
"@babel/plugin-transform-react-jsx@^7.18.6":
version "7.21.0"
@@ -1180,6 +1356,17 @@
"@babel/plugin-syntax-jsx" "^7.18.6"
"@babel/types" "^7.21.0"
+"@babel/plugin-transform-react-jsx@^7.19.0":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz#025d85a1935fd7e19dfdcb1b1d4df34d4da484f7"
+ integrity sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-jsx" "^7.18.6"
+ "@babel/types" "^7.20.7"
+
"@babel/plugin-transform-react-pure-annotations@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844"
@@ -1196,6 +1383,14 @@
"@babel/helper-plugin-utils" "^7.20.2"
regenerator-transform "^0.15.1"
+"@babel/plugin-transform-regenerator@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e"
+ integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.21.5"
+ regenerator-transform "^0.15.1"
+
"@babel/plugin-transform-reserved-words@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a"
@@ -1204,12 +1399,12 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-transform-runtime@^7.0.0":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194"
- integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz#2e1da21ca597a7d01fc96b699b21d8d2023191aa"
+ integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==
dependencies:
- "@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-module-imports" "^7.21.4"
+ "@babel/helper-plugin-utils" "^7.20.2"
babel-plugin-polyfill-corejs2 "^0.3.3"
babel-plugin-polyfill-corejs3 "^0.6.0"
babel-plugin-polyfill-regenerator "^0.4.1"
@@ -1251,7 +1446,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.5.0":
+"@babel/plugin-transform-typescript@^7.18.6":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.7.tgz#673f49499cd810ae32a1ea5f3f8fab370987e055"
integrity sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==
@@ -1260,6 +1455,16 @@
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-typescript" "^7.20.0"
+"@babel/plugin-transform-typescript@^7.5.0":
+ version "7.21.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b"
+ integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-create-class-features-plugin" "^7.21.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-typescript" "^7.20.0"
+
"@babel/plugin-transform-unicode-escapes@^7.18.10":
version "7.18.10"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246"
@@ -1267,6 +1472,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.9"
+"@babel/plugin-transform-unicode-escapes@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2"
+ integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.21.5"
+
"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca"
@@ -1275,7 +1487,89 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/preset-env@^7.12.9", "@babel/preset-env@^7.20.2":
+"@babel/preset-env@^7.12.9":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb"
+ integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==
+ dependencies:
+ "@babel/compat-data" "^7.21.5"
+ "@babel/helper-compilation-targets" "^7.21.5"
+ "@babel/helper-plugin-utils" "^7.21.5"
+ "@babel/helper-validator-option" "^7.21.0"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.20.7"
+ "@babel/plugin-proposal-class-properties" "^7.18.6"
+ "@babel/plugin-proposal-class-static-block" "^7.21.0"
+ "@babel/plugin-proposal-dynamic-import" "^7.18.6"
+ "@babel/plugin-proposal-export-namespace-from" "^7.18.9"
+ "@babel/plugin-proposal-json-strings" "^7.18.6"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6"
+ "@babel/plugin-proposal-numeric-separator" "^7.18.6"
+ "@babel/plugin-proposal-object-rest-spread" "^7.20.7"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.18.6"
+ "@babel/plugin-proposal-optional-chaining" "^7.21.0"
+ "@babel/plugin-proposal-private-methods" "^7.18.6"
+ "@babel/plugin-proposal-private-property-in-object" "^7.21.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.18.6"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-import-assertions" "^7.20.0"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
+ "@babel/plugin-transform-arrow-functions" "^7.21.5"
+ "@babel/plugin-transform-async-to-generator" "^7.20.7"
+ "@babel/plugin-transform-block-scoped-functions" "^7.18.6"
+ "@babel/plugin-transform-block-scoping" "^7.21.0"
+ "@babel/plugin-transform-classes" "^7.21.0"
+ "@babel/plugin-transform-computed-properties" "^7.21.5"
+ "@babel/plugin-transform-destructuring" "^7.21.3"
+ "@babel/plugin-transform-dotall-regex" "^7.18.6"
+ "@babel/plugin-transform-duplicate-keys" "^7.18.9"
+ "@babel/plugin-transform-exponentiation-operator" "^7.18.6"
+ "@babel/plugin-transform-for-of" "^7.21.5"
+ "@babel/plugin-transform-function-name" "^7.18.9"
+ "@babel/plugin-transform-literals" "^7.18.9"
+ "@babel/plugin-transform-member-expression-literals" "^7.18.6"
+ "@babel/plugin-transform-modules-amd" "^7.20.11"
+ "@babel/plugin-transform-modules-commonjs" "^7.21.5"
+ "@babel/plugin-transform-modules-systemjs" "^7.20.11"
+ "@babel/plugin-transform-modules-umd" "^7.18.6"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5"
+ "@babel/plugin-transform-new-target" "^7.18.6"
+ "@babel/plugin-transform-object-super" "^7.18.6"
+ "@babel/plugin-transform-parameters" "^7.21.3"
+ "@babel/plugin-transform-property-literals" "^7.18.6"
+ "@babel/plugin-transform-regenerator" "^7.21.5"
+ "@babel/plugin-transform-reserved-words" "^7.18.6"
+ "@babel/plugin-transform-shorthand-properties" "^7.18.6"
+ "@babel/plugin-transform-spread" "^7.20.7"
+ "@babel/plugin-transform-sticky-regex" "^7.18.6"
+ "@babel/plugin-transform-template-literals" "^7.18.9"
+ "@babel/plugin-transform-typeof-symbol" "^7.18.9"
+ "@babel/plugin-transform-unicode-escapes" "^7.21.5"
+ "@babel/plugin-transform-unicode-regex" "^7.18.6"
+ "@babel/preset-modules" "^0.1.5"
+ "@babel/types" "^7.21.5"
+ babel-plugin-polyfill-corejs2 "^0.3.3"
+ babel-plugin-polyfill-corejs3 "^0.6.0"
+ babel-plugin-polyfill-regenerator "^0.4.1"
+ core-js-compat "^3.25.1"
+ semver "^6.3.0"
+
+"@babel/preset-env@^7.20.2":
version "7.20.2"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506"
integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==
@@ -1489,12 +1783,12 @@
pirates "^4.0.5"
source-map-support "^0.5.16"
-"@babel/runtime@^7.0.0":
- version "7.17.2"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941"
- integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.9":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
+ integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
dependencies:
- regenerator-runtime "^0.13.4"
+ regenerator-runtime "^0.13.11"
"@babel/runtime@^7.10.4", "@babel/runtime@^7.5.5":
version "7.18.6"
@@ -1503,7 +1797,7 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.6", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.4", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.6", "@babel/runtime@^7.19.4", "@babel/runtime@^7.8.4":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd"
integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==
@@ -1551,7 +1845,7 @@
"@babel/parser" "^7.18.6"
"@babel/types" "^7.18.6"
-"@babel/traverse@^7.1.6", "@babel/traverse@^7.14.0", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7":
+"@babel/traverse@^7.1.6", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7":
version "7.20.12"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5"
integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==
@@ -1567,6 +1861,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.14.0", "@babel/traverse@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133"
+ integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==
+ dependencies:
+ "@babel/code-frame" "^7.21.4"
+ "@babel/generator" "^7.21.5"
+ "@babel/helper-environment-visitor" "^7.21.5"
+ "@babel/helper-function-name" "^7.21.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.21.5"
+ "@babel/types" "^7.21.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/traverse@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d"
@@ -1651,6 +1961,15 @@
"@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
+"@babel/types@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6"
+ integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==
+ dependencies:
+ "@babel/helper-string-parser" "^7.21.5"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
"@base2/pretty-print-object@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4"
@@ -2467,6 +2786,27 @@
xcode "^3.0.1"
xml2js "0.4.23"
+"@expo/config-plugins@~6.0.0":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-6.0.1.tgz#827cb34c51f725d8825b0768df6550c1cf81d457"
+ integrity sha512-6mqZutxeibXFeqFfoZApFUEH2n1RxGXYMHCdJrDj4eXDBBFZ3aJ0XBoroZcHHHvfRieEsf54vNyJoWp7JZGj8g==
+ dependencies:
+ "@expo/config-types" "^48.0.0"
+ "@expo/json-file" "~8.2.37"
+ "@expo/plist" "^0.0.20"
+ "@expo/sdk-runtime-versions" "^1.0.0"
+ "@react-native/normalize-color" "^2.0.0"
+ chalk "^4.1.2"
+ debug "^4.3.1"
+ find-up "~5.0.0"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ resolve-from "^5.0.0"
+ semver "^7.3.5"
+ slash "^3.0.0"
+ xcode "^3.0.1"
+ xml2js "0.4.23"
+
"@expo/config-types@^46.0.1":
version "46.0.2"
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-46.0.2.tgz#191f225ebfcbe624868ddc40efae79593f948dd8"
@@ -2477,6 +2817,11 @@
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-47.0.0.tgz#99eeabe0bba7a776e0f252b78beb0c574692c38d"
integrity sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==
+"@expo/config-types@^48.0.0":
+ version "48.0.0"
+ resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-48.0.0.tgz#15a46921565ffeda3c3ba010701398f05193d5b3"
+ integrity sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A==
+
"@expo/config@7.0.1":
version "7.0.1"
resolved "https://registry.yarnpkg.com/@expo/config/-/config-7.0.1.tgz#d8e2e5410bb0b8e305690bbc76e6bb76f6a6de31"
@@ -2511,6 +2856,23 @@
slugify "^1.3.4"
sucrase "^3.20.0"
+"@expo/config@~8.0.0":
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.0.2.tgz#53ecfa9bafc97b990ff9e34e210205b0e3f05751"
+ integrity sha512-WubrzTNNdAXy1FU8TdyQ7D9YtDj2tN3fWXDq+C8In+nB7Qc08zwH9cVdaGZ+rBVmjFZBh5ACfObKq/m9cm4QQA==
+ dependencies:
+ "@babel/code-frame" "~7.10.4"
+ "@expo/config-plugins" "~6.0.0"
+ "@expo/config-types" "^48.0.0"
+ "@expo/json-file" "^8.2.37"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ require-from-string "^2.0.2"
+ resolve-from "^5.0.0"
+ semver "7.3.2"
+ slugify "^1.3.4"
+ sucrase "^3.20.0"
+
"@expo/configure-splash-screen@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz#07d97ee512fd859fcc09506ba3762fd6263ebc39"
@@ -2592,7 +2954,7 @@
json5 "^1.0.1"
write-file-atomic "^2.3.0"
-"@expo/json-file@^8.2.35":
+"@expo/json-file@^8.2.35", "@expo/json-file@^8.2.37", "@expo/json-file@~8.2.37":
version "8.2.37"
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.37.tgz#9c02d3b42134907c69cc0a027b18671b69344049"
integrity sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==
@@ -2638,11 +3000,11 @@
exec-async "^2.2.0"
"@expo/package-manager@~0.0.53":
- version "0.0.57"
- resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-0.0.57.tgz#1cd71da0632c52a9a001b45e5d0d7e1e16de97d3"
- integrity sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ==
+ version "0.0.60"
+ resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-0.0.60.tgz#d346202892e79ddf4cd6a1b5c40e2d73ae6be2fb"
+ integrity sha512-MdV7dpFA4aI8HIW0xsW2DBUem5aFKL8+/v5LXKPZuXmYW02/EXPSp7DBJAwow8ULpa3Q2VlYfb46hWPre3hw4A==
dependencies:
- "@expo/json-file" "8.2.36"
+ "@expo/json-file" "^8.2.37"
"@expo/spawn-async" "^1.5.0"
ansi-regex "^5.0.0"
chalk "^4.0.0"
@@ -2662,6 +3024,15 @@
base64-js "^1.2.3"
xmlbuilder "^14.0.0"
+"@expo/plist@^0.0.20":
+ version "0.0.20"
+ resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.20.tgz#a6b3124438031c02b762bad5a47b70584d3c0072"
+ integrity sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==
+ dependencies:
+ "@xmldom/xmldom" "~0.7.7"
+ base64-js "^1.2.3"
+ xmlbuilder "^14.0.0"
+
"@expo/prebuild-config@5.0.7":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz#4658b66126c4d32c7b6302571e458a71811b07aa"
@@ -2704,9 +3075,9 @@
cross-spawn "^6.0.5"
"@expo/spawn-async@^1.5.0":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.0.tgz#3ab6082b24318cccc4e73b13464da91325555500"
- integrity sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.2.tgz#fcfe66c3e387245e72154b1a7eae8cada6a47f58"
+ integrity sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==
dependencies:
cross-spawn "^7.0.3"
@@ -2806,9 +3177,9 @@
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
"@graphql-typed-document-node/core@^3.1.0":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052"
- integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861"
+ integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==
"@hapi/hoek@^9.0.0":
version "9.3.0"
@@ -2858,11 +3229,11 @@
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
"@jest/create-cache-key-function@^29.0.3":
- version "29.3.1"
- resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.3.1.tgz#3a0970ea595ab3d9507244edbcef14d6b016cdc9"
- integrity sha512-4i+E+E40gK13K78ffD/8cy4lSSqeWwyXeTZoq16tndiCP12hC8uQsPJdIu5C6Kf22fD8UbBk71so7s/6VwpUOQ==
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.5.0.tgz#24e019d03e634be4affe8bcee787d75a36ae57a2"
+ integrity sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==
dependencies:
- "@jest/types" "^29.3.1"
+ "@jest/types" "^29.5.0"
"@jest/schemas@^29.0.0":
version "29.0.0"
@@ -2871,6 +3242,13 @@
dependencies:
"@sinclair/typebox" "^0.24.1"
+"@jest/schemas@^29.4.3":
+ version "29.4.3"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788"
+ integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==
+ dependencies:
+ "@sinclair/typebox" "^0.25.16"
+
"@jest/transform@^29.3.1":
version "29.3.1"
resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d"
@@ -2926,6 +3304,18 @@
"@types/yargs" "^17.0.8"
chalk "^4.0.0"
+"@jest/types@^29.5.0":
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593"
+ integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==
+ dependencies:
+ "@jest/schemas" "^29.4.3"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^17.0.8"
+ chalk "^4.0.0"
+
"@joshwooding/vite-plugin-react-docgen-typescript@^0.2.1":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.2.1.tgz#930f6f0382520e4ba349eea1b152f9ae49364516"
@@ -4395,45 +4785,45 @@
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa"
integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==
-"@react-navigation/core@^6.4.6":
- version "6.4.6"
- resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.6.tgz#b0738667dec5927b01c4c496c2f4c73ef8a5e4dd"
- integrity sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==
+"@react-navigation/core@^6.4.8":
+ version "6.4.8"
+ resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.8.tgz#a18e106d3c59cdcfc4ce53f7344e219ed35c88ed"
+ integrity sha512-klZ9Mcf/P2j+5cHMoGyIeurEzyBM2Uq9+NoSFrF6sdV5iCWHLFhrCXuhbBiQ5wVLCKf4lavlkd/DDs47PXs9RQ==
dependencies:
- "@react-navigation/routers" "^6.1.6"
+ "@react-navigation/routers" "^6.1.8"
escape-string-regexp "^4.0.0"
nanoid "^3.1.23"
query-string "^7.1.3"
react-is "^16.13.0"
use-latest-callback "^0.1.5"
-"@react-navigation/elements@^1.3.13":
- version "1.3.13"
- resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.13.tgz#5105fa26df8d32810cd9f14d6ec5a3d2c2bb26d2"
- integrity sha512-LqqK5s2ZfYHn2cQ376jC5V9dQztLH5ixkkJj9WR7JY2g4SghDd39WJhL3Jillw1Mu3F3b9sZwvAK+QkXhnDeAA==
+"@react-navigation/elements@^1.3.17":
+ version "1.3.17"
+ resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.17.tgz#9cb95765940f2841916fc71686598c22a3e4067e"
+ integrity sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==
"@react-navigation/native-stack@^6.9.8":
- version "6.9.8"
- resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.8.tgz#c953a169918a4bdde56f7d2dc1073da4726b4cb7"
- integrity sha512-74dje939lflsTXJQwCAdznbJ4B6V8sA5CSzuHwbiogL8B6EVXNa/qliXtB7DBAvzeyWDWT3u+gM2vOYJOeXYhA==
+ version "6.9.12"
+ resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.12.tgz#a09fe43ab2fc4c82a1809e3953021d1da4ead85c"
+ integrity sha512-kS2zXCWP0Rgt7uWaCUKrRl7U2U1Gp19rM1kyRY2YzBPXhWGVPjQ2ygBp88CTQzjgy8M07H/79jvGiZ0mlEJI+g==
dependencies:
- "@react-navigation/elements" "^1.3.13"
+ "@react-navigation/elements" "^1.3.17"
warn-once "^0.1.0"
"@react-navigation/native@^6.1.2":
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.2.tgz#6fffbf4787c233687fff8fe9ce7364ffce696d38"
- integrity sha512-qLUe0asHofr5EhxKjvUBJ9DrPPmR4535IEwmW3oU4DRb3cLbNysjajJKHL8kcYtqPvn9Bx9QZG2x0PMb2vN23A==
+ version "6.1.6"
+ resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.6.tgz#84ff5cf85b91f660470fa9407c06c8ee393d5792"
+ integrity sha512-14PmSy4JR8HHEk04QkxQ0ZLuqtiQfb4BV9kkMXD2/jI4TZ+yc43OnO6fQ2o9wm+Bq8pY3DxyerC2AjNUz+oH7Q==
dependencies:
- "@react-navigation/core" "^6.4.6"
+ "@react-navigation/core" "^6.4.8"
escape-string-regexp "^4.0.0"
fast-deep-equal "^3.1.3"
nanoid "^3.1.23"
-"@react-navigation/routers@^6.1.6":
- version "6.1.6"
- resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.6.tgz#f57f2a73855d329255aa225fdad75ae8e7700c6d"
- integrity sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==
+"@react-navigation/routers@^6.1.8":
+ version "6.1.8"
+ resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.8.tgz#ae56b2678dbb5abca5bd7c95d6a8d1abc767cba2"
+ integrity sha512-CEge+ZLhb1HBrSvv4RwOol7EKLW1QoqVIQlE9TN5MpxS/+VoQvP+cLbuz0Op53/iJfYhtXRFd1ZAd3RTRqto9w==
dependencies:
nanoid "^3.1.23"
@@ -4483,6 +4873,11 @@
"@react-spring/shared" "~9.7.2"
"@react-spring/types" "~9.7.2"
+"@resvg/resvg-wasm@2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@resvg/resvg-wasm/-/resvg-wasm-2.4.1.tgz#88f7a08107bf5ea691b016e55e6db955c85d845c"
+ integrity sha512-yi6R0HyHtsoWTRA06Col4WoDs7SvlXU3DLMNP2bdAgs7HK18dTEVl1weXgxRzi8gwLteGUbIg29zulxIB3GSdg==
+
"@rollup/plugin-babel@^6.0.3":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz#07ccde15de278c581673034ad6accdb4a153dfeb"
@@ -4572,6 +4967,14 @@
component-type "^1.2.1"
join-component "^1.1.0"
+"@shuding/opentype.js@1.4.0-beta.0":
+ version "1.4.0-beta.0"
+ resolved "https://registry.yarnpkg.com/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz#5d1e7e9e056f546aad41df1c5043f8f85d39e24b"
+ integrity sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==
+ dependencies:
+ fflate "^0.7.3"
+ string.prototype.codepointat "^0.2.1"
+
"@sideway/address@^4.1.3":
version "4.1.4"
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"
@@ -4579,7 +4982,7 @@
dependencies:
"@hapi/hoek" "^9.0.0"
-"@sideway/formula@^3.0.0":
+"@sideway/formula@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f"
integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
@@ -4594,6 +4997,11 @@
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f"
integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
+"@sinclair/typebox@^0.25.16":
+ version "0.25.24"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718"
+ integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==
+
"@stablelib/aead@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3"
@@ -6579,70 +6987,83 @@
"@tamagui/use-event" "1.11.1"
"@tamagui/use-force-update" "1.11.1"
+"@tanstack/query-core@4.29.7":
+ version "4.29.7"
+ resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.7.tgz#9fe4587e23cb9566b937c518ffa44226041d388d"
+ integrity sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==
+
+"@tanstack/react-query@^4.29.7":
+ version "4.29.7"
+ resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.7.tgz#772996905a81ca64172582891c5a82e88dbafccd"
+ integrity sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==
+ dependencies:
+ "@tanstack/query-core" "4.29.7"
+ use-sync-external-store "^1.2.0"
+
"@tauri-apps/api@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.2.0.tgz#1f196b3e012971227f41b98214c846430a4eb477"
- integrity sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.3.0.tgz#d0c853ab2cc7506bd826c5f7f260c67c7c15def5"
+ integrity sha512-AH+3FonkKZNtfRtGrObY38PrzEj4d+1emCbwNGu0V2ENbXjlLHMZQlUh+Bhu/CRmjaIwZMGJ3yFvWaZZgTHoog==
-"@tauri-apps/cli-darwin-arm64@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.3.tgz#dae9142e683c00199f4d7e088f22b564b08b9cac"
- integrity sha512-phJN3fN8FtZZwqXg08bcxfq1+X1JSDglLvRxOxB7VWPq+O5SuB8uLyssjJsu+PIhyZZnIhTGdjhzLSFhSXfLsw==
+"@tauri-apps/cli-darwin-arm64@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.3.1.tgz#ef0fe290e0a6e3e53fa2cc4f1a72a0c87921427c"
+ integrity sha512-QlepYVPgOgspcwA/u4kGG4ZUijlXfdRtno00zEy+LxinN/IRXtk+6ErVtsmoLi1ZC9WbuMwzAcsRvqsD+RtNAg==
-"@tauri-apps/cli-darwin-x64@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.3.tgz#c6f84a11a1a7800e3e8e22c8fa5b95d0b3d1f802"
- integrity sha512-jFZ/y6z8z6v4yliIbXKBXA7BJgtZVMsITmEXSuD6s5+eCOpDhQxbRkr6CA+FFfr+/r96rWSDSgDenDQuSvPAKw==
+"@tauri-apps/cli-darwin-x64@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.3.1.tgz#4c84ea0f08a5b636b067943d637a38e091a4aad3"
+ integrity sha512-fKcAUPVFO3jfDKXCSDGY0MhZFF/wDtx3rgFnogWYu4knk38o9RaqRkvMvqJhLYPuWaEM5h6/z1dRrr9KKCbrVg==
-"@tauri-apps/cli-linux-arm-gnueabihf@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.3.tgz#ecccec4c255ab32903fb36e1c746ed7b4eff0d1d"
- integrity sha512-C7h5vqAwXzY0kRGSU00Fj8PudiDWFCiQqqUNI1N+fhCILrzWZB9TPBwdx33ZfXKt/U4+emdIoo/N34v3TiAOmQ==
+"@tauri-apps/cli-linux-arm-gnueabihf@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.3.1.tgz#a4f1b237189e4f8f89cc890e1dc2eec76d4345be"
+ integrity sha512-+4H0dv8ltJHYu/Ma1h9ixUPUWka9EjaYa8nJfiMsdCI4LJLNE6cPveE7RmhZ59v9GW1XB108/k083JUC/OtGvA==
-"@tauri-apps/cli-linux-arm64-gnu@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.3.tgz#c3915de83a8fbe6f406eaa0b524a17c091a9a2cd"
- integrity sha512-buf1c8sdkuUzVDkGPQpyUdAIIdn5r0UgXU6+H5fGPq/Xzt5K69JzXaeo6fHsZEZghbV0hOK+taKV4J0m30UUMQ==
+"@tauri-apps/cli-linux-arm64-gnu@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.3.1.tgz#e2391326b64dfe13c7442bdcc13c4988ce5e6df9"
+ integrity sha512-Pj3odVO1JAxLjYmoXKxcrpj/tPxcA8UP8N06finhNtBtBaxAjrjjxKjO4968KB0BUH7AASIss9EL4Tr0FGnDuw==
-"@tauri-apps/cli-linux-arm64-musl@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.3.tgz#40f9f7cf0b4088964661fd412eff7310cb4ac605"
- integrity sha512-x88wPS9W5xAyk392vc4uNHcKBBvCp0wf4H9JFMF9OBwB7vfd59LbQCFcPSu8f0BI7bPrOsyHqspWHuFL8ojQEA==
+"@tauri-apps/cli-linux-arm64-musl@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.3.1.tgz#49354349f80f879ffc6950c0c03c0aea1395efa5"
+ integrity sha512-tA0JdDLPFaj42UDIVcF2t8V0tSha40rppcmAR/MfQpTCxih6399iMjwihz9kZE1n4b5O4KTq9GliYo50a8zYlQ==
-"@tauri-apps/cli-linux-x64-gnu@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.3.tgz#0b3e4c1fda6205dbe872f4b69506669476f60591"
- integrity sha512-ZMz1jxEVe0B4/7NJnlPHmwmSIuwiD6ViXKs8F+OWWz2Y4jn5TGxWKFg7DLx5OwQTRvEIZxxT7lXHi5CuTNAxKg==
+"@tauri-apps/cli-linux-x64-gnu@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.3.1.tgz#9a33ffe9e0d9b1b3825db57cbcfcddeb773682c6"
+ integrity sha512-FDU+Mnvk6NLkqQimcNojdKpMN4Y3W51+SQl+NqG9AFCWprCcSg62yRb84751ujZuf2MGT8HQOfmd0i77F4Q3tQ==
-"@tauri-apps/cli-linux-x64-musl@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.3.tgz#edcf8f53da50337a2e763d4fda750ef56124036c"
- integrity sha512-B/az59EjJhdbZDzawEVox0LQu2ZHCZlk8rJf85AMIktIUoAZPFbwyiUv7/zjzA/sY6Nb58OSJgaPL2/IBy7E0A==
+"@tauri-apps/cli-linux-x64-musl@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.3.1.tgz#5283731e894c17bc070c499e73145cfe2633ef21"
+ integrity sha512-MpO3akXFmK8lZYEbyQRDfhdxz1JkTBhonVuz5rRqxwA7gnGWHa1aF1+/2zsy7ahjB2tQ9x8DDFDMdVE20o9HrA==
-"@tauri-apps/cli-win32-ia32-msvc@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.3.tgz#0592d3e4eee4685674579ba897eef1469c6f1cfe"
- integrity sha512-ypdO1OdC5ugNJAKO2m3sb1nsd+0TSvMS9Tr5qN/ZSMvtSduaNwrcZ3D7G/iOIanrqu/Nl8t3LYlgPZGBKlw7Ng==
+"@tauri-apps/cli-win32-ia32-msvc@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.3.1.tgz#f31538abfd94f27ade1f17d01f30da6be1660c6f"
+ integrity sha512-9Boeo3K5sOrSBAZBuYyGkpV2RfnGQz3ZhGJt4hE6P+HxRd62lS6+qDKAiw1GmkZ0l1drc2INWrNeT50gwOKwIQ==
-"@tauri-apps/cli-win32-x64-msvc@1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.3.tgz#89f0cc36e11e56564161602cd6add155cc7b0dfb"
- integrity sha512-CsbHQ+XhnV/2csOBBDVfH16cdK00gNyNYUW68isedmqcn8j+s0e9cQ1xXIqi+Hue3awp8g3ImYN5KPepf3UExw==
+"@tauri-apps/cli-win32-x64-msvc@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.3.1.tgz#1eb09d55b99916a3cd84cb91c75ef906db67d35d"
+ integrity sha512-wMrTo91hUu5CdpbElrOmcZEoJR4aooTG+fbtcc87SMyPGQy1Ux62b+ZdwLvL1sVTxnIm//7v6QLRIWGiUjCPwA==
"@tauri-apps/cli@^1.2.2":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.2.3.tgz#957f8a3a370f306e9e1ea5a891cb30aed91af64e"
- integrity sha512-erxtXuPhMEGJPBtnhPILD4AjuT81GZsraqpFvXAmEJZ2p8P6t7MVBifCL8LznRknznM3jn90D3M8RNBP3wcXTw==
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.3.1.tgz#4c5259bf1f9c97084dd016e6b34dca53de380e24"
+ integrity sha512-o4I0JujdITsVRm3/0spfJX7FcKYrYV1DXJqzlWIn6IY25/RltjU6qbC1TPgVww3RsRX63jyVUTcWpj5wwFl+EQ==
optionalDependencies:
- "@tauri-apps/cli-darwin-arm64" "1.2.3"
- "@tauri-apps/cli-darwin-x64" "1.2.3"
- "@tauri-apps/cli-linux-arm-gnueabihf" "1.2.3"
- "@tauri-apps/cli-linux-arm64-gnu" "1.2.3"
- "@tauri-apps/cli-linux-arm64-musl" "1.2.3"
- "@tauri-apps/cli-linux-x64-gnu" "1.2.3"
- "@tauri-apps/cli-linux-x64-musl" "1.2.3"
- "@tauri-apps/cli-win32-ia32-msvc" "1.2.3"
- "@tauri-apps/cli-win32-x64-msvc" "1.2.3"
+ "@tauri-apps/cli-darwin-arm64" "1.3.1"
+ "@tauri-apps/cli-darwin-x64" "1.3.1"
+ "@tauri-apps/cli-linux-arm-gnueabihf" "1.3.1"
+ "@tauri-apps/cli-linux-arm64-gnu" "1.3.1"
+ "@tauri-apps/cli-linux-arm64-musl" "1.3.1"
+ "@tauri-apps/cli-linux-x64-gnu" "1.3.1"
+ "@tauri-apps/cli-linux-x64-musl" "1.3.1"
+ "@tauri-apps/cli-win32-ia32-msvc" "1.3.1"
+ "@tauri-apps/cli-win32-x64-msvc" "1.3.1"
"@testing-library/dom@^8.3.0":
version "8.19.1"
@@ -7043,11 +7464,16 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.11.tgz#cbb15c12ca7c16c85a72b6bdc4d4b01151bb3cae"
integrity sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==
-"@types/node@^18.11.11", "@types/node@^18.15.11":
+"@types/node@^18.11.11":
version "18.15.11"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f"
integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==
+"@types/node@^18.15.11":
+ version "18.16.14"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.14.tgz#ab67bb907f1146afc6fedb9ce60ae8a99c989631"
+ integrity sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg==
+
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
@@ -7096,9 +7522,9 @@
"@types/react" "*"
"@types/react-native@~0.70.6":
- version "0.70.9"
- resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.70.9.tgz#7d9d11960a4ab78c874e77af895f83d2817aac96"
- integrity sha512-0C6sIo13ztzM2llaWdTq0Vpscx3VdU0T8F45kEurWv3l5n+BHm/Mkr8Z+N29eXDYGhTvCz5y2jegB8JyiVa5kw==
+ version "0.70.13"
+ resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.70.13.tgz#a38a1378e68dc25fe5911b09c49b8afffe191316"
+ integrity sha512-VnC/ny8Eynk3fvY4cnNKXpo/0zUhA2gO64RX51yzVofblOP6TR6jciga0kIjI4c+2eUyWNGrahmiolNm+QU6Cw==
dependencies:
"@types/react" "*"
@@ -7324,11 +7750,12 @@
wonka "^4.0.14"
"@urql/core@>=2.3.1":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@urql/core/-/core-3.1.1.tgz#a49cd572360d01f2469a786b294fba2269a65e53"
- integrity sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q==
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.0.7.tgz#8918a956f8e2ffbaeb3aae58190d728813de5841"
+ integrity sha512-UtZ9oSbSFODXzFydgLCXpAQz26KGT1d6uEfcylKphiRWNXSWZi8k7vhJXNceNm/Dn0MiZ+kaaJHKcnGY1jvHRQ==
dependencies:
- wonka "^6.1.2"
+ "@0no-co/graphql.web" "^1.0.1"
+ wonka "^6.3.2"
"@urql/exchange-retry@0.3.0":
version "0.3.0"
@@ -7349,6 +7776,15 @@
integrity sha512-0QhaE5mhaQbFlip4MX7n1nwCX8gax6Da1LsP2fZ/BU6xW9zyEmV6NX7DPelDxq1rr2NiBJh30vx9RIp80YeA/A==
dependencies:
"@use-gesture/core" "10.2.26"
+
+"@vercel/og@^0.5.4":
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/@vercel/og/-/og-0.5.4.tgz#71de6335b94d0032b325936337c0259d85b9de19"
+ integrity sha512-o4Zjgw66HPtfGFYG4CFcKfnCcK6qCY+3FC6g22Z1SdAN5jN8XjbHCh3hRVHH5IGBQp8mxH941EcH53KimAm+wg==
+ dependencies:
+ "@resvg/resvg-wasm" "2.4.1"
+ satori "0.7.2"
+ yoga-wasm-web "0.3.3"
"@visx/annotation@2.18.0":
version "2.18.0"
@@ -7802,10 +8238,10 @@
loupe "^2.3.6"
pretty-format "^27.5.1"
-"@xmldom/xmldom@~0.7.0":
- version "0.7.9"
- resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.9.tgz#7f9278a50e737920e21b297b8a35286e9942c056"
- integrity sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==
+"@xmldom/xmldom@~0.7.0", "@xmldom/xmldom@~0.7.7":
+ version "0.7.10"
+ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.10.tgz#b1f4a7dc63ac35b2750847644d5dacf5b4ead12f"
+ integrity sha512-hb9QhOg5MGmpVkFcoZ9XJMe1em5gd0e2eqqjK87O1dwULedXsnY/Zg/Ju6lcohA+t6jVkmKpe7I1etqhvdRdrQ==
"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10":
version "3.0.0-rc.15"
@@ -8387,9 +8823,9 @@ babel-plugin-polyfill-regenerator@^0.4.1:
"@babel/helper-define-polyfill-provider" "^0.3.3"
babel-plugin-react-native-web@~0.18.2:
- version "0.18.10"
- resolved "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.10.tgz#028c349d1c4c929f86dc757a4e724d3e651d3424"
- integrity sha512-2UiwS6G7XKJvpo0X5OFkzGjHGFuNx9J+DgEG8TEmm+X5S0z6EB59W11RDEZghdKzsQzVbs1jB+2VHBuVgjMTiw==
+ version "0.18.12"
+ resolved "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.12.tgz#3e9764484492ea612a16b40135b07c2d05b7969d"
+ integrity sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==
babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0:
version "7.0.0-beta.0"
@@ -8457,6 +8893,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+base64-js@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
+ integrity sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==
+
base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@@ -8524,7 +8965,7 @@ blueimp-md5@^2.10.0:
resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0"
integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==
-body-parser@1.20.1, body-parser@^1.20.1:
+body-parser@1.20.1:
version "1.20.1"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
@@ -8542,6 +8983,24 @@ body-parser@1.20.1, body-parser@^1.20.1:
type-is "~1.6.18"
unpipe "1.0.0"
+body-parser@^1.20.1:
+ version "1.20.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
+ integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.5"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.11.0"
+ raw-body "2.5.2"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
boxen@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
@@ -8862,6 +9321,11 @@ camelcase@^6.0.0, camelcase@^6.2.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+camelize@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3"
+ integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==
+
caniuse-lite@^1.0.30001400:
version "1.0.30001418"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz#5f459215192a024c99e3e3a53aac310fc7cf24e6"
@@ -8958,9 +9422,9 @@ ci-info@^3.1.0, ci-info@^3.2.0:
integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==
ci-info@^3.3.0:
- version "3.7.1"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f"
- integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
+ integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
class-utils@^0.3.5:
version "0.3.6"
@@ -9016,9 +9480,9 @@ cli-cursor@^3.1.0:
restore-cursor "^3.1.0"
cli-spinners@^2.0.0, cli-spinners@^2.5.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a"
- integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db"
+ integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==
cli-table3@^0.6.1:
version "0.6.3"
@@ -9298,6 +9762,11 @@ content-type@~1.0.4:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+content-type@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
convert-hrtime@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-5.0.0.tgz#f2131236d4598b95de856926a67100a0a97e9fa3"
@@ -9437,6 +9906,21 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+css-background-parser@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b"
+ integrity sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==
+
+css-box-shadow@1.0.0-3:
+ version "1.0.0-3"
+ resolved "https://registry.yarnpkg.com/css-box-shadow/-/css-box-shadow-1.0.0-3.tgz#9eaeb7140947bf5d649fc49a19e4bbaa5f602713"
+ integrity sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==
+
+css-color-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
+ integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
+
css-in-js-utils@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb"
@@ -9487,6 +9971,15 @@ css-select@^5.1.0:
domutils "^3.0.1"
nth-check "^2.0.1"
+css-to-react-native@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32"
+ integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==
+ dependencies:
+ camelize "^1.0.0"
+ css-color-keywords "^1.0.0"
+ postcss-value-parser "^4.0.2"
+
css-tree@^1.1.2, css-tree@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
@@ -10193,6 +10686,11 @@ electron-to-chromium@^1.4.284:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.368.tgz#75901f97d3e23da2e66feb1e61fbb8e70ac96430"
integrity sha512-e2aeCAixCj9M7nJxdB/wDjO6mbYX+lJJxSJCXDzlr5YPGYVofuJwGN9nKg2o6wWInjX6XmxRinn3AeJMK81ltw==
+emoji-regex@^10.2.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f"
+ integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -11100,7 +11598,15 @@ expo-blur@^12.2.2:
resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-12.2.2.tgz#b7f94499255afbd3468302d02f3c4e39a0e562d5"
integrity sha512-SvGbEZbB0VFNGqCW7FcqzWOEb3lrRgBnQKGrsKo49KwhMyHTYjYVYWnmrk9l8Tr7lIaNnd55QD6dPAzcXjZYMg==
-expo-constants@^14.0.2, expo-constants@~14.0.0, expo-constants@~14.0.2:
+expo-constants@^14.0.2:
+ version "14.2.1"
+ resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.2.1.tgz#b5b6b8079d2082c31ccf2cbc7cf97a0e83c229c3"
+ integrity sha512-DD5u4QmBds2U7uYo409apV7nX+XjudARcgqe7S9aRFJ/6kyftmuxvk1DpaU4X42Av8z/tfKwEpuxl+vl7HHx/Q==
+ dependencies:
+ "@expo/config" "~8.0.0"
+ uuid "^3.3.2"
+
+expo-constants@~14.0.0, expo-constants@~14.0.2:
version "14.0.2"
resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.0.2.tgz#2cb1dec8f41a64c2fc5b4eecaf77d7661cad01cc"
integrity sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==
@@ -11109,36 +11615,36 @@ expo-constants@^14.0.2, expo-constants@~14.0.0, expo-constants@~14.0.2:
uuid "^3.3.2"
expo-dev-client@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.0.1.tgz#f5878807c96a60d90fc219b6535654cb6ddb9214"
- integrity sha512-+OXXZKKo/CplqklpaZasHAX7qaRrzC83biqXTFa1z5NiFW41uqtAqTFx6gmPi4kx3YgwtD+ep6R3SRrKjdCukg==
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.2.1.tgz#3abdb875e9c9ed30e1f6dadc2f80b392d15b1c1e"
+ integrity sha512-BDhKyni82LiT6PypgBns1/FLqo3cGDBluaj4/Pojx9P7x9iwOFcesepO8r6BCWb4LuBjdB+z2yQ1fMXxzNC3qQ==
dependencies:
- expo-dev-launcher "2.0.2"
- expo-dev-menu "2.0.2"
- expo-dev-menu-interface "1.0.0"
- expo-manifests "~0.4.0"
- expo-updates-interface "~0.8.0"
+ expo-dev-launcher "2.2.1"
+ expo-dev-menu "2.2.0"
+ expo-dev-menu-interface "1.1.1"
+ expo-manifests "~0.5.0"
+ expo-updates-interface "~0.9.0"
-expo-dev-launcher@2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.0.2.tgz#bbcde0dd35e81ed6a415dc5b246da68e9b365255"
- integrity sha512-MQT7VSOHJQrEs3YAv5BQLYs3Uk7P1dNqBw6kKrj3jKBq0z92k2LLg1aCk7nP8OGJVDvrb2jTXBka8VXVqF0ECg==
+expo-dev-launcher@2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.2.1.tgz#db9eec550487400cdac9c2aeedd3b6791fd49469"
+ integrity sha512-TP9SOrNIKF5Whju7uhtBsJeOvf9idUSg7snhHNVRpm2mA5kReckeD3PFv4HsvBHdnrfoslpeq4spOdS6UUx3XA==
dependencies:
- expo-dev-menu "2.0.2"
+ expo-dev-menu "2.2.0"
resolve-from "^5.0.0"
semver "^7.3.5"
-expo-dev-menu-interface@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.0.0.tgz#00204cb7e1c43cc8a4eee9cb74f6e5760b512d75"
- integrity sha512-4lsVofTwV9oBM+zo7XhtmvbfiXD4I7I3Rqns6U0i6IOnH7OGBDpKvGZ5YikWPFGn6NOu8loqqd8S7inFIaxC0A==
+expo-dev-menu-interface@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.1.1.tgz#8a0d979f62d9a192696f66a77f75d8fab79e604b"
+ integrity sha512-doT+7WrSBnxCcTGZw9QIEZoL+43U4RywbG8XZwbhkcsFWGsh9scp0y/bv3ieFHxRtIdImxbxOoYh7fy1O6g28w==
-expo-dev-menu@2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-2.0.2.tgz#9a2d7a00097d4eafe54cf8e9a5c727174e101e4c"
- integrity sha512-SxR5riXgm+VVKsDKC/bOLuOJ0CKutW07G+OqJ9eYfxwGfxa8omLJHwagbCsd8FwUPGkzvzgfRJRGLo5J6REMow==
+expo-dev-menu@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-2.2.0.tgz#849ec3601f1dc228ad2858e4a25614a72932a61c"
+ integrity sha512-ImRUD7IVyLme7t3S+pNsOOgCBorkriVNo+ryEmkAjzRTKlpiklhoc1GEdQUU3qvO6e66gUguMbs4wnaP6o4NEw==
dependencies:
- expo-dev-menu-interface "1.0.0"
+ expo-dev-menu-interface "1.1.1"
semver "^7.3.5"
expo-eas-client@~0.4.0:
@@ -11170,17 +11676,17 @@ expo-json-utils@~0.4.0:
resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.4.0.tgz#47ae83a1cc973101d62371f94790e9ad39491751"
integrity sha512-lK6gjea72XTYafpKNNJaMrBK5dYAX8LFLXrp/M1MKJU4Zy7EHd2rKrLwop3GZts8VdwLHeVcMko79SAbhe3i5Q==
+expo-json-utils@~0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.5.1.tgz#fcb01050b8aa66592eea2024a48979f2d090c6f9"
+ integrity sha512-Y5boshyf40vPjwxNnOIfacZPNkOymecZRQ1k+TSXlq6gnw5XRsnM5hnP0VLVYhdv8x+9CX6E1fDsDUNvsK38Dg==
+
expo-keep-awake@~11.0.1:
version "11.0.1"
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz#ee354465892a94040ffe09901b85b469e7d54fb3"
integrity sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==
-expo-linear-gradient@^12.0.1:
- version "12.0.1"
- resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-12.0.1.tgz#452f793b0463ddf313aad431552f23acc85f5d64"
- integrity sha512-TMl/wBTVQOliL4S3DS5Aa3UFfVySr0mdJEHLG6kfBdMCLkr+tfLI2rGyJ+scS7xgMsvhTIaurhf1+Z0sL3aLCg==
-
-expo-linear-gradient@^12.1.2:
+expo-linear-gradient@^12.0.1, expo-linear-gradient@^12.1.2:
version "12.1.2"
resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-12.1.2.tgz#25e352b179a73fb7c2de3c1bc48186557e445348"
integrity sha512-e1d6Hq5qsRL8sWutrOuQhuir4vHiRJ1PmvDIL8P33mt51Y8VFTQjTG/mr5qJlT8lUD/ADJfaBLzV7SNqSuDTLQ==
@@ -11192,6 +11698,13 @@ expo-manifests@~0.4.0:
dependencies:
expo-json-utils "~0.4.0"
+expo-manifests@~0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.5.2.tgz#60f91ad196cd5a37248c28c6f307df806c5a27ad"
+ integrity sha512-WnsTlE2le3pV/B/AJPKTOSjb2K9AT1mPDCfQxTQ/KMCwF95saoXYt2OPF3hxZNaMAV6VIAhXgd5Y6wpcH9ruPQ==
+ dependencies:
+ expo-json-utils "~0.5.0"
+
expo-modules-autolinking@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz#f072f342ab797e43b16ddcdef251fcd4db851e1a"
@@ -11220,9 +11733,9 @@ expo-splash-screen@~0.17.5:
"@expo/prebuild-config" "5.0.7"
expo-status-bar@^1.4.2:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.4.2.tgz#14f2b9a6dc7d550578421f07e0046f5fafc2b403"
- integrity sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q==
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.4.4.tgz#6874ccfda5a270d66f123a9f220735a76692d114"
+ integrity sha512-5DV0hIEWgatSC3UgQuAZBoQeaS9CqeWRZ3vzBR9R/+IUD87Adbi4FGhU10nymRqFXOizGsureButGZIXPs7zEA==
expo-structured-headers@~3.0.0:
version "3.0.1"
@@ -11234,6 +11747,11 @@ expo-updates-interface@~0.8.0:
resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.8.1.tgz#baeeeb01a77439682432be83ba78bc2e00547c4e"
integrity sha512-1TPFCTQFHMZbltFGnxig3PbN/b6nO4T0RyL8XqdmYvQY0ElOCprZXQQ8vNDqeLYHgausG1lD4OyJwFzh2SNBSA==
+expo-updates-interface@~0.9.0:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.9.1.tgz#e81308d551ed5a4c35c8770ac61434f6ca749610"
+ integrity sha512-wk88LLhseQ7LJvxdN7BTKiryyqALxnrvr+lyHK3/prg76Yy0EGi2Q/oE/rtFyyZ1JmQDRbO/5pdX0EE6QqVQXQ==
+
expo-updates@^0.15.6:
version "0.15.6"
resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.15.6.tgz#99e3faa3e38312ebddb77afb697863fa1f1f6a03"
@@ -11253,9 +11771,9 @@ expo-updates@^0.15.6:
uuid "^3.4.0"
expo@~47.0.12:
- version "47.0.13"
- resolved "https://registry.yarnpkg.com/expo/-/expo-47.0.13.tgz#f53f82e7f9e209f8a8b25f2493f58439958368cb"
- integrity sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng==
+ version "47.0.14"
+ resolved "https://registry.yarnpkg.com/expo/-/expo-47.0.14.tgz#3386d82d56f0827d1c5661aec5eae7d2b7dea43e"
+ integrity sha512-WA6BbLI00R9TweBHRVm+kAFoYqkYOK4oMizNV2CmpxEJaRm8J4R9KI2+WnfkYVPiW6dzDTUR4bG6yAwgzSowEA==
dependencies:
"@babel/runtime" "^7.14.0"
"@expo/cli" "0.4.11"
@@ -11480,6 +11998,11 @@ fetch-retry@^5.0.2:
resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.3.tgz#edfa3641892995f9afee94f25b168827aa97fe3d"
integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==
+fflate@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50"
+ integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==
+
figma-api@^1.11.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/figma-api/-/figma-api-1.11.0.tgz#5218208cc03996f91c4afe3056f7d09aa1a0ca47"
@@ -12176,11 +12699,16 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
version "4.2.10"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+graceful-fs@^4.1.3, graceful-fs@^4.1.9:
+ version "4.2.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
grapheme-splitter@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
@@ -12360,6 +12888,11 @@ hermes-profile-transformer@^0.0.6:
dependencies:
source-map "^0.7.3"
+hex-rgb@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/hex-rgb/-/hex-rgb-4.3.0.tgz#af5e974e83bb2fefe44d55182b004ec818c07776"
+ integrity sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==
+
hi-base32@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e"
@@ -13480,14 +14013,14 @@ jiti@^1.17.2:
integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==
joi@^17.2.1:
- version "17.7.0"
- resolved "https://registry.yarnpkg.com/joi/-/joi-17.7.0.tgz#591a33b1fe1aca2bc27f290bcad9b9c1c570a6b3"
- integrity sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==
+ version "17.9.2"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690"
+ integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==
dependencies:
"@hapi/hoek" "^9.0.0"
"@hapi/topo" "^5.0.0"
"@sideway/address" "^4.1.3"
- "@sideway/formula" "^3.0.0"
+ "@sideway/formula" "^3.0.1"
"@sideway/pinpoint" "^2.0.0"
join-component@^1.1.0:
@@ -13674,14 +14207,7 @@ json5@^0.5.1:
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==
-json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
- dependencies:
- minimist "^1.2.0"
-
-json5@^1.0.2:
+json5@^1.0.1, json5@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
@@ -13906,6 +14432,14 @@ lilconfig@2.1.0, lilconfig@^2.0.5, lilconfig@^2.0.6:
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
+linebreak@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-1.1.0.tgz#831cf378d98bced381d8ab118f852bd50d81e46b"
+ integrity sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==
+ dependencies:
+ base64-js "0.0.8"
+ unicode-trie "^2.0.0"
+
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@@ -14788,6 +15322,11 @@ minipass@^4.0.2, minipass@^4.2.4:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb"
integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==
+minipass@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
+ integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
+
minizlib@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
@@ -14919,16 +15458,16 @@ nanoid@^3.0.2:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
-nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.4:
- version "3.3.4"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
- integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
-
-nanoid@^3.3.6:
+nanoid@^3.1.23, nanoid@^3.3.6:
version "3.3.6"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+nanoid@^3.3.1, nanoid@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+
nanoid@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.0.tgz#6e144dee117609232c3f415c34b0e550e64999a5"
@@ -15046,11 +15585,17 @@ node-fetch-native@^1.0.1:
resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.0.1.tgz#1dfe78f57545d07e07016b7df4c0cb9d2ff416c7"
integrity sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==
-node-fetch@2.6.7, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7:
+node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7:
version "2.6.7"
- uid "1b5d62978f2ed07b99444f64f0df39f960a6d34d"
resolved "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz#1b5d62978f2ed07b99444f64f0df39f960a6d34d"
+node-fetch@^2.2.0, node-fetch@^2.6.0:
+ version "2.6.11"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25"
+ integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-forge@^1.1.0, node-forge@^1.2.1, node-forge@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
@@ -15342,7 +15887,16 @@ open@^7.0.3, open@^7.4.2:
is-docker "^2.0.0"
is-wsl "^2.1.1"
-open@^8.0.4, open@^8.3.0, open@^8.4.0:
+open@^8.0.4, open@^8.3.0:
+ version "8.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
+ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+open@^8.4.0:
version "8.4.0"
resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
@@ -15565,7 +16119,7 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-pako@~0.2.0:
+pako@^0.2.5, pako@~0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
@@ -15585,6 +16139,14 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
+parse-css-color@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/parse-css-color/-/parse-css-color-0.2.1.tgz#b687a583f2e42e66ffdfce80a570706966e807c9"
+ integrity sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==
+ dependencies:
+ color-name "^1.1.4"
+ hex-rgb "^4.1.0"
+
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -15919,7 +16481,7 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-select
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
@@ -16218,6 +16780,11 @@ qrcode-terminal@0.11.0:
resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz#ffc6c28a2fc0bfb47052b47e23f4f446a5fbdb9e"
integrity sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==
+qrcode.react@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8"
+ integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==
+
qs@6.11.0, qs@^6.10.0:
version "6.11.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
@@ -16275,6 +16842,16 @@ raw-body@2.5.1:
iconv-lite "0.4.24"
unpipe "1.0.0"
+raw-body@2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
rc@~1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
@@ -16854,9 +17431,9 @@ requires-port@^1.0.0:
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
reselect@^4.0.0:
- version "4.1.7"
- resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42"
- integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==
+ version "4.1.8"
+ resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524"
+ integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==
resolve-from@^3.0.0:
version "3.0.0"
@@ -16878,7 +17455,7 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.22.1:
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -16887,7 +17464,7 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^1.1.7:
+resolve@^1.1.7, resolve@^1.13.1:
version "1.22.2"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
@@ -17083,6 +17660,21 @@ sanitize-filename@^1.6.3:
dependencies:
truncate-utf8-bytes "^1.0.0"
+satori@0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/satori/-/satori-0.7.2.tgz#1d935f3520ad22009b7b19e4c2e73c55660d6534"
+ integrity sha512-Eltg0/i3OEbBLaveCnYi2j+p0J9Bb5rmDMXddq4Zy0/NYHbpTkPIlPYGgb+DKamhmvXhiGvWGiFdqHVjJCaCpA==
+ dependencies:
+ "@shuding/opentype.js" "1.4.0-beta.0"
+ css-background-parser "^0.1.0"
+ css-box-shadow "1.0.0-3"
+ css-to-react-native "^3.0.0"
+ emoji-regex "^10.2.1"
+ linebreak "^1.1.0"
+ parse-css-color "^0.2.1"
+ postcss-value-parser "^4.2.0"
+ yoga-wasm-web "^0.3.3"
+
sax@>=0.6.0, sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -17268,9 +17860,9 @@ shebang-regex@^3.0.0:
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shell-quote@^1.6.1, shell-quote@^1.7.3:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8"
- integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
+ integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
shelljs@^0.8.5:
version "0.8.5"
@@ -17379,9 +17971,9 @@ slice-ansi@^5.0.0:
is-fullwidth-code-point "^4.0.0"
slugify@^1.3.4:
- version "1.6.5"
- resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8"
- integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==
+ version "1.6.6"
+ resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b"
+ integrity sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==
smartwrap@^2.0.2:
version "2.0.2"
@@ -17672,6 +18264,11 @@ string-width@^5.0.0:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
+string.prototype.codepointat@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc"
+ integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==
+
string.prototype.matchall@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
@@ -17843,19 +18440,7 @@ styleq@^0.1.2:
resolved "https://registry.yarnpkg.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71"
integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==
-sucrase@^3.20.0:
- version "3.29.0"
- resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d"
- integrity sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==
- dependencies:
- commander "^4.0.0"
- glob "7.1.6"
- lines-and-columns "^1.1.6"
- mz "^2.7.0"
- pirates "^4.0.1"
- ts-interface-checker "^0.1.9"
-
-sucrase@^3.29.0:
+sucrase@^3.20.0, sucrase@^3.29.0:
version "3.32.0"
resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7"
integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==
@@ -18102,7 +18687,19 @@ tar-stream@^2.1.4:
inherits "^2.0.3"
readable-stream "^3.1.1"
-tar@^6.0.2, tar@^6.0.5, tar@^6.1.12:
+tar@^6.0.2, tar@^6.0.5:
+ version "6.1.15"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69"
+ integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==
+ dependencies:
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ minipass "^5.0.0"
+ minizlib "^2.1.1"
+ mkdirp "^1.0.3"
+ yallist "^4.0.0"
+
+tar@^6.1.12:
version "6.1.13"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b"
integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==
@@ -18279,6 +18876,11 @@ tiny-glob@^0.2.9:
globalyzer "0.1.0"
globrex "^0.1.2"
+tiny-inflate@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4"
+ integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==
+
tinybench@^2.3.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.4.0.tgz#83f60d9e5545353610fe7993bd783120bc20c7a7"
@@ -18348,6 +18950,11 @@ toidentifier@1.0.1:
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
traverse@~0.6.6:
version "0.6.7"
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe"
@@ -18685,6 +19292,14 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+unicode-trie@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8"
+ integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==
+ dependencies:
+ pako "^0.2.5"
+ tiny-inflate "^1.0.0"
+
union-value@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
@@ -18851,9 +19466,9 @@ use-isomorphic-layout-effect@^1.1.1:
integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
use-latest-callback@^0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.5.tgz#a4a836c08fa72f6608730b5b8f4bbd9c57c04f51"
- integrity sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.6.tgz#3fa6e7babbb5f9bfa24b5094b22939e1e92ebcf6"
+ integrity sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg==
use-resize-observer@^9.1.0:
version "9.1.0"
@@ -18870,7 +19485,7 @@ use-sidecar@^1.1.2:
detect-node-es "^1.1.0"
tslib "^2.0.0"
-use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0:
+use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
@@ -19093,6 +19708,11 @@ wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
webidl-conversions@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
@@ -19133,6 +19753,14 @@ whatwg-mimetype@^3.0.0:
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
wherearewe@^2.0.0, wherearewe@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-2.0.1.tgz#37c97a7bf112dca8db34bfefb2f6c997af312bb8"
@@ -19227,10 +19855,10 @@ wonka@^4.0.14:
resolved "https://registry.yarnpkg.com/wonka/-/wonka-4.0.15.tgz#9aa42046efa424565ab8f8f451fcca955bf80b89"
integrity sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==
-wonka@^6.1.2:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.1.2.tgz#2c66fa5b26a12f002a03619b988258313d0b5352"
- integrity sha512-zNrXPMccg/7OEp9tSfFkMgTvhhowqasiSHdJ3eCZolXxVTV/aT6HUTofoZk9gwRbGoFey/Nss3JaZKUMKMbofg==
+wonka@^6.3.2:
+ version "6.3.2"
+ resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.3.2.tgz#6f32992b332251d7b696b038990f4dc284b3b33d"
+ integrity sha512-2xXbQ1LnwNS7egVm1HPhW2FyKrekolzhpM3mCwXdQr55gO+tAiY76rhb32OL9kKsW8taj++iP7C6hxlVzbnvrw==
word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
@@ -19471,6 +20099,11 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+yoga-wasm-web@0.3.3, yoga-wasm-web@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz#eb8e9fcb18e5e651994732f19a220cb885d932ba"
+ integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==
+
zustand@^4.3.3:
version "4.3.6"
resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.6.tgz#ce7804eb75361af0461a2d0536b65461ec5de86f"